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

2022-09-04 06:23:08

我有两个类拥有和拥有Accessor。这些文件位于同一目录中。

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);
    }
}

当我尝试使用 编译时,我收到编译错误。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();
                   ^

这是怎么回事?代码在 eclipse IDE 下编译良好。


答案 1

好的,假设您已将代码分发到文件中,如下所示

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


答案 2

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

javac -cp . Owning.java OwningAccessor.java

Eclipse 会为您编译所有必要的文件,这就是在那里工作的原因。


推荐