0

所以我在 Linux 中有一个文件树,看起来像这样:

  • ~/keyboard_warriors/
    • 测试/
      • 配置测试.java
    • ConfigParser.class
    • 配置解析器.java

问题是当我尝试输入终端时:
javac ConfigTest.java

我得到错误:

ConfigTest.java:2: error: package keyboard_warriors does not exist  
import keyboard_warriors.*;  
^

这真的让我很烦恼,我在任何地方都找不到任何答案。如果你能解决我的问题,我会是一个非常幸福的人。

4

3 回答 3

0

它不会将类路径之外的目录识别为类路径的一部分。

您可能想要在运行测试的位置包含另一个文件夹:

test/
    keyboard_warriors/
        ConfigTest.java
        ConfigParser.java

这也假定您已将这些类声明在keyboard_warriors类路径中,通过以下方式:

package keyboard_warriors;

根据您编译这些类的方式,您必须将其添加到带有-cpon 标志的类路径中javac

于 2014-11-16T22:25:53.933 回答
0

keyboard_warriors鉴于您引用的结构,导入ConfigTest;会很奇怪 从结构中,您希望看到的是package keyboard_warriors;,因为ConfigTestkeyboard_warriors目录中。

如果ConfigTest 不在包中keyboard_warriors,则可能是在错误的目录中。

一般来说:当你编译类时,.java文件应该在一个以它所在的包命名的目录中。例如,如果ConfigTest要在包中,你应该保持你的目录/文件结构不变并且利用

package keyboard_warriors;

...在ConfigTest.java

如果ConfigTest 打算在该包中,您可能会将其移出该目录;也许:

  • ~/keyboard_warriors/
    • 测试/
      • 配置测试.java
  • ConfigParser.class
  • 配置解析器.java

...然后import keyboard_warriors.*;就有意义了,前提是您的主目录在您的类路径中。

于 2014-11-16T22:28:15.340 回答
0

我很久以前就想出了答案,但忘记发布了。对不起 :)。其实很简单。我试图从test/文件夹内编译类。我所做的是上升到所有类都可以访问的位置,而无需使用绝对路径,也无需../在路径中使用(也就是keyboard_warriors/文件夹。我只是从那里编译,一切都很好。不过感谢您的输入,它确实帮助了一些人;)。

于 2015-03-05T22:24:20.250 回答