實施例:當我們已經設置-classpath來定位該文件時,是否必須完全限定類名稱?
我有一個名爲PROGA
package test;
public class ProgA
{
public static void main(String[] args)
{
ProgB pb = new ProgB();
pb.callMe();
}
}
現在I類具有PROGB象下面這樣:
package test2;
public class ProgB
{
public void callMe()
{
System.out.println("inside callme");
}
}
編譯ProgB.java它的類文件中的包TEST2生成後。現在,當我嘗試使用此命令編譯ProgA.java時:
javac -cp C:\Users\MyName\Desktop\test2 ProgA.java
我得到錯誤,它找不到ProgB。 我的問題是爲什麼不能java看類路徑中找到ProgB.class文件併成功編譯我的ProgA.java?當我在ProgA.java代碼中指定ProgB的完全限定類名稱並且將類路徑設置爲-classpath C:\Users\MyName\Desktop
運行時,代碼正常工作。當我已經指定完整的類路徑來查找ProgB時,爲什麼要有完全的Quilified名稱。我不清楚這個類路徑和完全合格的類名的概念。請解釋我。謝謝
我相信你需要先導入它。像'import test2.ProgB;'一樣。我不確定,因爲它是幾十年前我沉浸在Java中的時候。 –
這兩個類有不同的包。 (測試和測試2)除非特別說明,否則他們不會看到自己的包裝外。 –
所以@KRichardson你想說的是我們需要告訴編譯器ProgB與ProgA不在同一個包中,只需指定它的全限定名即可。沒有哪個編譯器認爲ProgB與ProgA在同一個包中,甚至不需要查看類路徑進行掃描? – sharath