Java Test包不存在

时间:2014-02-23 10:24:16

标签: java package

早上好, 我有/home

中的文件Test.java
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

pack1pack2prog.io也在/home中。为什么找不到它们?

4 个答案:

答案 0 :(得分:1)

将类文件放在同一目录中是不够的。它们也必须具有相同的包装声明。

此外,/home必须是Classpath的一部分。如果/home是您的Classpath,则文件必须位于/home的子目录中:

/home/prog/io
    ConsoleOutputManager.class
/home/pack1
    A.class
/home
    Test.class
在任何ConsoleOutputManager.javapackage 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错误。解决方案是在构建路径中添加缺少的包源并保持源文件的有序化