使用命令行javac“找不到符号”错误

我有两个class级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); } } 

当我尝试使用javac -cp . OwningAccessor.java编译OwningAccessorjavac -cp . OwningAccessor.java 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下编译得很好。

好的,我们假设您将代码分布在文件中,如下所示

 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文件夹中查找它们。

确保编译Owning.java和OwningAccessor.java,如下所示:

javac -cp . Owning.java OwningAccessor.java

Eclipse为您编译所有必需的文件,这就是为什么在那里工作。

尝试制作正确的源路径示例:

 javac -d temp -sourcepath c:\ awork \ JavaProjects \ singleton \ src \ c:\ JavaProjects \ singleton \ src \ com \ company \ MySingleton.java

 javac -d temp -sourcepath c:\ awork \ JavaProjects \ singleton \ src \ c:\ JavaProjects \ singleton \ src \ com \ company \ Main.java

在“temp”中我们分配资源,而-sourcepath指示.java文件在哪里。

因此,在名为D:\ Automation的目录中,有一个文件Demo.java抛出此错误,当你在D:\ Automation时,在cmd中,你需要: – 1)cd .. //将你从自动化中拉出来目录。 在D:> 2)javac Automation \ Demo.java

这将编译您的文件 – Demo.java