[英]Java - Use of nonpublic class from the current package makes compiling error
我有以下兩個源文件
文件World.java
package planets;
public class World {
public static void main(String[] args) {
Mars.land();
}
}
文件Moon.java
package planets;
public class Moon {
public static void land() {
System.out.println("Hello Moon");
}
}
class Mars {
public static void land() {
System.out.println("Hello Mars");
}
}
我們可以看到, Moon.java
包含兩個類:公共Moon
類和非公共Mars
類。
這些文件位於planets
目錄內,下面是目錄樹
+current-dir:
+----+planets:
+----+World.java
+----+Moon.java
現在,如果我嘗試從Windows命令提示符(我在current-dir
文件夾中)編譯進行編譯
javac planets\World.java
我收到此錯誤消息:
planets\World.java:5: error: cannot find symbol
Mars.land();
^
symbol: variable Mars
location: class World
1 error
這很奇怪,因為我知道編譯器在當前包的所有源文件中搜索非公共類。 也是Cay Horstmann的核心Java第1卷,第10版。 在第192-193頁說:
[...]您可以從當前包導入非公共類。 可以在具有不同名稱的源文件中定義這些類。 如果從當前包導入類,則編譯器將搜索當前包的所有源文件,以查看哪個類定義了該類。
此外,我嘗試使用Eclipse Oxygen編寫這些文件,並且編譯沒有問題。 但我知道Eclipse使用不同的編譯器。
為什么javac
編譯失敗?
編輯:我沒有設置CLASSPATH
變量。 所以默認編譯器在當前目錄中查找。
您需要按順序鍵入以下命令(在'current-dir'中)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.