早上好,
我有/home
class Test {
public static void main(String[] args) {
prog.io.ConsoleOutputManager out=new prog.io.ConsoleOutputManager();
pack1.A a=new pack1.A();
out.println(a.toString());
}
}
给了我错误:
Test.java:3: error: package prog.io does not exist
prog.io.ConsoleOutputManager out=new prog.io.ConsoleOutputManager();
^
Test.java:3: error: package prog.io does not exist
prog.io.ConsoleOutputManager out=new prog.io.ConsoleOutputManager();
^
Test.java:5: error: package pack1 does not exist
pack1.A a=new pack1.A();
^
Test.java:5: error: package pack1 does not exist
pack1.A a=new pack1.A();
^
4 errors
pack1
,pack2
和prog.io
也在/home
中。为什么找不到它们?
答案 0 :(得分:1)
将类文件放在同一目录中是不够的。它们也必须具有相同的包装声明。
此外,/home
必须是Classpath
的一部分。如果/home
是您的Classpath
,则文件必须位于/home
的子目录中:
/home/prog/io
ConsoleOutputManager.class
/home/pack1
A.class
/home
Test.class
在任何ConsoleOutputManager.java
或package prog.io;
声明之前, import
应该有class
之类的声明。 A.java
应该有package pack1;
。
通过这种方式,您可以使用以下命令运行类通知类路径:
java -cp /home Test
它会找到它的依赖关系。
您也可以将依赖项放在具有相同结构的JAR文件中,然后在类路径中包含JAR文件:
java -cp yourJar.jar:/home Test
答案 1 :(得分:1)
请确保您已设置类路径,以便它可以找到您在代码中使用的软件包。
答案 2 :(得分:0)
检查您的ConsoleOutputManager类中是否还有包声明。它应该是:
package prog.io;
作为文件的第一行。
答案 3 :(得分:0)
您的源文件未正确组织到包中或缺少包。您的类文件定义
prog.io.ConsoleOutputManager out=new prog.io.ConsoleOutputManager();
pack1.A a=new pack1.A();
因此,JVM将在ConsoleOutputManager
包中查找类prog.io
并在A
包中查找类pack1
,但无法找到并抛出package doesn't exist
错误。解决方案是在构建路径中添加缺少的包源并保持源文件的有序化