Java:包不存在

时间:2015-07-02 13:49:53

标签: java

我在目录中:E:\ stuff \ Java>

我创建了一个包A:

package pack;

public class A
{
    public void methodA(){
        System.out.println("MethodA");
    }
}

要编译,我使用了以下语句:

javac -d . A.java

因此创建了一个名为pack的文件夹,其中包含A.class。 然后我尝试在另一个程序中导入这个包:

import pack.A;

    class B
    {
        public static void main(String[] args){
            A a = new A();
            a.methodA();
        }
    }

当我尝试编译此代码时:

javac B.java

我收到以下错误:

   B.java:1: error: package pack does not exist
import pack.A;
           ^
B.java:6: error: cannot find symbol
                A a = new A();
                ^
  symbol:   class A
  location: class B
B.java:6: error: cannot find symbol
                A a = new A();
                          ^
  symbol:   class A
  location: class B
3 errors

我不明白为什么代码无法运行。我的B.java文件和包在同一个文件夹中。

有人可以解释一下这段代码中的错误吗?

2 个答案:

答案 0 :(得分:2)

尝试以下命令在Windows上编译程序:

 javac -cp "<path of the package folder>" file_name.java

以及执行程序的命令:

java -cp "<path of the package folder>" file_name

答案 1 :(得分:0)

从您的错误看起来就像您的&#34;其他程序&#34; B.java不在&#39; A.java&#39;的同一目录(E:\ stuff \ Java)中。这意味着当您尝试编译B.java时,编译器不知道在哪里找到类pack.A。要使A可见&#34;您必须将pack.A添加到类路径中,这意味着要编译:

javac -cp ".;<path_to_add>" B.java

在您的情况下,<path_to_add>应为E:\stuff\Java。这会将您的类路径设置为不仅包括当前目录(.),还包括pack包所在的目录。

要运行您的程序,您必须再次将pack.A添加到类路径中:

java -cp ".;<path_to_add>" B

同样<path_to_add>应为E:\stuff\Java

这里我假设您正在使用Windows。在Unix上,-cp选项的语法稍有不同:-cp ".:<path_to_add>"其中;已被:替换。