我在目录: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 文件和包位于同一文件夹中。
有人可以解释一下这段代码中的错误吗?
从你的错误来看,它看起来像你的“其他程序”B.java
与“A.java”不在同一目录(E:\stuff\Java)中。这意味着当您尝试编译时B.java
编译器不知道在哪里找到类pack.A
。要“使 A 可见”,您必须添加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>"
哪里的;
已被替换为:
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)