我使用以下代码创建了源文件.java:
// bank.java
// demonstrates basic OOP syntax
// to run this program: C>java BankApp
////////////////////////////////////////////////////////////////
class BankAccount
{
private double balance; // account balance
public BankAccount(double openingBalance) // constructor
{
balance = openingBalance;
}
public void deposit(double amount) // makes deposit
{
balance = balance + amount;
}
public void withdraw(double amount) // makes withdrawal
{
balance = balance - amount;
}
public void display() // displays balance
{
System.out.println(“balance=” + balance);
}
} // end class BankAccount
////////////////////////////////////////////////////////////////
class BankApp
{
public static void main(String[] args)
{
BankAccount ba1 = new BankAccount(100.00); // create acct
System.out.print(“Before transactions, “);
ba1.display(); // display balance
ba1.deposit(74.35); // make deposit
ba1.withdraw(20.00); // make withdrawal
System.out.print(“After transactions, “);
ba1.display(); // display balance
} // end main()
} // end class BankApp
我使用命令“javac”编译它并获得了两个类文件 - 每个文件用于一个类。 我尝试使用cmd运行它,但在输入后我收到错误“访问被拒绝”:
C:\new>java -cp <C:\new> BankApp.class
输入后:
C:\new>java BankApp.class
我得到:错误:无法找到或加载主类BankApp.class
答案 0 :(得分:3)
此命令
C:\new>java -cp <C:\new> BankApp.class
尝试从C:\new
重定向输入并将输出重定向到BankApp.class
。在Windows命令提示符(以及大多数其他命令提示)中,<
重定向输入和>
重定向输出。另外,当您运行Java类时,不指定.class
,而是提供类名称,而不是文件名。
如果您的目标是确保当前目录位于类路径中,那么您需要的是:
C:\new>java -cp . BankApp
如果您的目标是确保目录c:\new
在类路径中(即使它不是当前目录,尽管它在您的示例中),您正在寻找的是:
C:\new>java -cp c:\new BankApp
请注意,您首次尝试的命令可能已删除或截断您的BankApp.class
文件,因此您可能需要重新编译它才能执行上述操作。
答案 1 :(得分:1)
你只需要:
java BankApp
或者
java -cp c:\new BankApp
Java采用类的名称,而不是文件 ...如果您使用<
和>
,则会询问Windows shell执行重定向,这是你不想要的。