我有两个班级Owning和OwningAccessor。这些文件位于同一目录中。
public class Owning {
String _name = "";
public void printBanner()
{
}
public void printOwning(double amount)
{
printBanner();
//print details
System.out.println("name:" + _name);
System.out.println("amount:" + amount);
}
}
public class OwningAccessor {
public void access()
{
Owning o = new Owning();
o.printOwning(500);
}
}
当我尝试使用OwningAccessor
编译javac -cp . OwningAccessor.java
时,出现了编译错误。
symbol : class Owning
location: class smcho.OwningAccessor
Owning o = new Owning();
^
OwningAccessor.java:6: cannot find symbol
symbol : class Owning
location: class smcho.OwningAccessor
Owning o = new Owning();
^
这有什么问题?代码在eclipse IDE下编译得很好。
答案 0 :(得分:17)
好的,我们假设您将代码分发在文件中,如下所示
myproject
├── out
└── src
├── OwningAccessor.java
└── Owning.java
转到命令提示符,将目录更改为myproject
。一旦发出以下命令:
javac -d out -sourcepath src src/OwningAccessor.java
我刚试过它,它运作得很好。您编译的类将位于out
文件夹中:
.
├── out
│ ├── OwningAccessor.class
│ └── Owning.class
└── src
├── OwningAccessor.java
└── Owning.java
编译一个类将触发所有其他依赖类的编译。编译器将自动在src
文件夹中查找它们。
答案 1 :(得分:13)
确保编译Owning.java和OwningAccessor.java,如下所示:
javac -cp . Owning.java OwningAccessor.java
Eclipse为您编译所有必需的文件,这就是为什么在那里工作。
答案 2 :(得分:0)
因此,在名为D:\ Automation的目录中,有一个文件Demo.java引发此错误,当您在D:\ Automation中时,该文件位于cmd中,您需要:- 1)cd .. //将您从自动化目录中拉出来。 在D:> 2)javac Automation \ Demo.java
这将编译您的文件-Demo.java