【问题标题】:Java issue compiling code in command line: Package does not exist...but it doesJava问题在命令行中编译代码:包不存在......但它确实存在
【发布时间】:2015-11-01 15:13:47
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 将您的 ./colorCalculator 更改为 .

标签: java command-line package javac


【解决方案1】:

类路径旨在包含任何适当目录的包结构的。因此,编译器当前正在寻找 ../../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.我在类路径周围添加了引号。 2. 我指定了 jar 本身,但仍然收到相同的原始错误消息。
  • @newbie:你不应该需要引号 - 这就是我删除它们的原因。重要的变化是使用 just 。而不是 ./colorModel。您使用的是什么操作系统?如果是 Unix,你应该使用 : 而不是 ;作为路径分隔符。
  • 我使用的是 OS X Yosemite
  • @newbie:那是另一个问题。将编辑我的答案。
  • 哦,对不起。应该把它放在我原来的帖子里!
【解决方案2】:

类路径包括包层次结构的根。因此,由于您将包命名为 colorCalculator,因此该路径的根不是“./colorCalculator”,而实际上只是“.”。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2018-08-02
    • 2017-05-26
    • 2020-08-08
    • 2013-11-15
    相关资源
    最近更新 更多