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

pro*_*eek 13 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译OwningAccessorjavac -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();
                   ^
Run Code Online (Sandbox Code Playgroud)

这有什么问题?代码在eclipse IDE下编译得很好.

Edw*_*rzo 17

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

myproject
??? out
??? src
    ??? OwningAccessor.java
    ??? Owning.java
Run Code Online (Sandbox Code Playgroud)

转到命令提示符,然后将目录更改为myproject.一旦发出以下命令:

javac -d out -sourcepath src src/OwningAccessor.java
Run Code Online (Sandbox Code Playgroud)

我只是测试它,它工作得很好.您编译的类将位于以下out文件夹中:

.
??? out
?   ??? OwningAccessor.class
?   ??? Owning.class
??? src
    ??? OwningAccessor.java
    ??? Owning.java
Run Code Online (Sandbox Code Playgroud)

编译一个类将触发所有其他依赖类的编译.编译器将自动在src文件夹中查找它们.


Kni*_*nug 13

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

javac -cp . Owning.java OwningAccessor.java

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

  • 如果在编译器中使用`-sourcepath`标志,它会这样做 (2认同)