1

我有一些位于classes/com/scja/exam/tutorial/planets文件系统中的类。我正在尝试编译位于classes/com/scja/exam/tutorial/. 我必须手动导入吗?我正在尝试使用以下命令进行编译:

javac -d 类 -cp 类/com/scja/exam/tutorial/planets/:. src/com/scjaexam/tutorial/GreetingsUniverse.java

似乎 java 找不到这个文件需要的类。

4

2 回答 2

3

了解当 Java 搜索名为 的类时aaa.bbb.ccc.MyClass,它会在类路径中的每个目录中搜索名为“aaa”的目录。找到一个,它将在该目录中搜索“bbb”,然后,如果找到“ccc”,则实际查找“MyClass.class”。如果你创建你的类路径-cp aaa/bbb/ccc,那么 Java 会在那里寻找,找不到“aaa”,然后放弃。

于 2013-04-23T21:27:33.733 回答
2

包中的类必须导入它使用的类(不使用它们的完全限定名),这些类不在同一个包中(不在 java.lang 中)。存储类的目录必须与包匹配,但您可以有多个包含类的根目录(或 jar)。

您的命令不起作用,因为您将包的目录 ( classes/com/scja/exam/tutorial/planets/) 放在类路径中,而不是放在根目录 ( classes) 中。

于 2013-04-23T21:21:01.620 回答