[英]Java: package does not exist
我在目錄中: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
不在“ B.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>"
其中;
已替換為:
。
嘗試使用以下命令在 windows 上編譯程序:
javac -cp "<path of the package folder>" file_name.java
以及執行程序的命令:
java -cp "<path of the package folder>" file_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.