我想了解Java包。爲什麼javac在同一個包中找不到我的類文件?
我有兩個類,A.java和B.java,在同一個包中。 A類參考B類。
兩者都有包裝語句package world.example;
並保存在目錄.../world/example/
。
乙編譯好的,但在嘗試編譯時的javac未能找到類文件爲B.
我試圖從/world
父以及來自/example
運行javac的。我在這裏和其他地方搜索了很多答案,但都無濟於事。關於類似主題的大多數問題似乎都有許多無關的代碼和信息,所以我試圖將我的問題歸結爲它的骨頭,但仍然看不到我缺少的東西。
附錄:如果我刪除了包語句,兩個類都編譯好,只要我在編譯A時指定類路徑,即:javac -classpath . A.java
。
代碼如下:
package world.example;
public class A {
public static void main(String[] args) {
String msg = B.getMessage();
System.out.println(msg);
}
}
......還有......
package world.example;
public class B {
protected static String getMessage() {
return "Hello world!";
}
}
...和javac的輸出...
17-04-17◆23:03 example »javac B.java
17-04-17◆23:04 example »javac A.java
A.java:5: error: cannot find symbol
String msg = B.getMessage();
^
symbol: variable B
location: class A
1 error
17-04-17◆23:04 example »javac -classpath . A.java
A.java:5: error: cannot find symbol
String msg = B.getMessage();
^
symbol: variable B
location: class A
1 error
從包含子目錄「word」的目錄編譯它們。 也就是說javac word/example/A.java –
如果您轉到'world'的父項並鍵入'javac world/example/*。java',會發生什麼? –