我在目录中: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文件和包在同一个文件夹中。
有人可以解释一下这段代码中的错误吗?
答案 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>"
其中;
已被:
替换。