13

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

当我尝试用 编译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 下编译良好。

4

4 回答 4

18

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

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

于 2012-11-15T23:58:26.990 回答
14

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

javac -cp . Owning.java OwningAccessor.java

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

于 2012-11-15T23:23:49.287 回答
1

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

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 文件的位置。

于 2015-04-29T20:37:50.537 回答
0

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

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

于 2018-08-08T13:03:52.560 回答