簡體   English   中英

Java:包不存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM