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

时间:2012-11-15 23:21:05

标签: java javac

我有两个班级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下编译得很好。

3 个答案:

答案 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