Java问题在命令行中编译代码:包不存在......但它确实存在

时间:2015-08-09 17:50:46

标签: java command-line package javac

我尝试使用此命令编译我的Java代码(OS X Yosemite):

javac -cp "../../;./colorCalculator;" Application.java

但是我得到以下错误(其中包括依赖于此的错误):

Application.java:4: error: package colorCalculator does not exist
import colorCalculator.Model;
                  ^
Application.java:5: error: package colorCalculator does not exist
import colorCalculator.View;
                  ^
Application.java:6: error: package colorCalculator does not exist
import colorCalculator.Controller;

我添加了两个类路径。 1." .jar"的路径该应用程序依赖于此。 2. Application.java从中导入的包。

目录结构如下:

├── colorcalculator
│   ├── Application.java
│   └── colorCalculator
│       ├── Controller.java
│       ├── Model.java
│       └── View.java
└── colorcalculator.zip

我从colorcalculator目录运行命令,因为它是Application.java和colorCalculator包的所在位置。我做错了什么?

最后,如果您愿意,可以参考代码。它来自教授的网站,所以我很确定它是正确的:code

谢谢!

2 个答案:

答案 0 :(得分:0)

类路径旨在包含任何适当目录的包结构的 root 。因此,当您真正希望它寻找../../colorCalculator/Model.class

时,编译器当前正在寻找./colorCalculator/colorCalculator/Model.class./colorCalculator/Model.class

此外,当您使用OS X时,您应该使用:而不是;作为路径分隔符。

所以你应该:

javac -cp ../..:. Application.java

请注意,您根本没有添加到jar文件的路径 - 如果您在../..中有一个实际需要的jar文件

javac -cp ../../whatever.jar:. Application.java

答案 1 :(得分:0)

Classpath包含包层次结构的根。因此,既然您将包名称命名为colorCalculator,那么该路径的根目录不是' ./ colorCalculator',但实际上只是'。'。

所以试试-cp" ../../;。"