I am new to java and have been trying to learn it and now I have been facing this error even though both the files are in the same folder :
BankTest.java:3: error: cannot find symbol
BankAccount b = new BankAccount( "M J W Morgan", "0012067" );
^
symbol: class BankAccount
location: class BankTest
BankTest.java:3: error: cannot find symbol
BankAccount b = new BankAccount( "M J W Morgan", "0012067" );
^
symbol: class BankAccount
location: class BankTest
BankTest.java:12: error: cannot find symbol
BankAccount c = new BankAccount( args[0], args[1] );
^
symbol: class BankAccount
location: class BankTest
BankTest.java:12: error: cannot find symbol
BankAccount c = new BankAccount( args[0], args[1] );
^
symbol: class BankAccount
location: class BankTest
BankTest.java:15: error: cannot find symbol
BankAccount c = new BankAccount( args[0], args[1], Double.parseDouble(args[2]) );
^
symbol: class BankAccount
location: class BankTest
BankTest.java:15: error: cannot find symbol
BankAccount c = new BankAccount( args[0], args[1], Double.parseDouble(args[2]) );
^
symbol: class BankAccount
location: class BankTest
I have both the BankAccount.java and the BankTest.java in the same folder. I have tried downloading the source code and still face the same error.
javac BankAccount.java works perfectly but javac BankTest.java shows up the error. What am I doing wrong here?
This is the BankAccount.java
public class BankAccount {
private String holderName;
private double balance;
private String number;
public BankAccount( String holderName, String number ){
this.holderName = holderName;
this.number = number;
balance = 0;
}
public BankAccount( String holderName, String number, double balance ){
this.holderName = holderName;
this.number = number;
this.balance = balance;
}
public String getHolderName(){
return holderName;
}
public void setName( String newName ){
holderName = newName;
}
public void deposit( double amount ){
balance += amount;
}
public void withdraw( double amount ){
balance -= amount;
}
public double checkBalance(){
return balance;
}
public String toString(){
String s = number + "\t" + holderName + "\t" + balance;
return s;
}
}
And this is the BankTest.java:
public class BankTest {
public static void main(String[] args) {
BankAccount b = new BankAccount( "M J W Morgan", "0012067" );
System.out.println( b );
b.deposit( 100 );
System.out.println( b );
b.withdraw( 500 );
System.out.println( b );
System.out.println( "Balance is: " + b.checkBalance() );
if( args.length == 2 ){
BankAccount c = new BankAccount( args[0], args[1] );
System.out.println( c );
} else {
BankAccount c = new BankAccount( args[0], args[1], Double.parseDouble(args[2]) );
System.out.println( c );
}
}
}
You need to compile the classes, and have them on your classpath. A good way to manage this is to use the -d
option. Make sure the directory "build" exists.
javac -d build BankAccount.java
That should compile and make a BankAccount.class in the "build" folder. Then you can do.
javac -cp build -d build BankTest.java
That should create the file BankTest.class in the build folder. Then you can run it.
java -cp build BankTest
You need to put the .class files on the classpath. That is why the -d
option works well because you know what folder to put on the class path, it will also create directories for packages and put the class files in the correct location.