讓我們考慮這樣的目錄結構:javac的錯誤:包com.myproject.planets不存在
C:\Tests>tree /F
C:.
│ GreetingsUniverse.java
│
└───planets
Earth.java
Jupiter.java
地球和木星有com.myproject.planets package
,GreetingsUniverse具有com.myproject
包。
javac的編譯失敗GreetingsUniverse.java
C:\Tests>javac -cp "C:\Tests\planets" GreetingsUniverse.java
GreetingsUniverse.java:3: error: package com.myproject.planets does not exist
import com.myproject.planets.Earth;
^
GreetingsUniverse.java:4: error: package com.myproject.planets does not exist
import com.myproject.planets.Jupiter;
^
GreetingsUniverse.java:19: error: cannot find symbol
new Earth();
^
symbol: class Earth
location: class GreetingsUniverse
GreetingsUniverse.java:20: error: cannot find symbol
new Jupiter();
^
symbol: class Jupiter
location: class GreetingsUniverse
4 errors
而另一個嘗試:
C:\Tests>javac -cp "C:\Tests\planets\" GreetingsUniverse.java
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
爲什麼它不編譯?類必須放在與包相同的目錄結構中嗎?所以木星應該放置在C:\ Tests \ com \ myproject \ planets \ Jupiter.java或者還有其他問題?
很簡單:目錄結構應該與包結構匹配。如果一個類在'com.myproject.planets'包中,那麼它的源文件應該在'com/myproject/planets'文件夾中。 'cp'選項應該包含jar文件和包樹的根目錄。 –