2013-06-29 29 views
1

名爲Bob的UNIX用戶希望用新軟件替換他的國際象棋程序,但他不確定舊軟件的安裝位置。鮑勃是目前能夠運行Java的國際象棋程序中使用的命令從他的家目錄/ home /鮑勃開始:基於軟件包的Java Q

java -classpath /test:/home/bob/downloads/*.jar games.Chess

Bob的CLASSPATH設置(在登錄時間):

/usr/lib:/home/bob/classes:/opt/java/lib:/opt/java/lib/*.jar

Chess.class文件的可能位置是什麼?

A. /test/Chess.class 
B. /home/bob/Chess.class 
C. /test/games/Chess.class 
D. /usr/lib/games/Chess.class 
E. /home/bob/games/Chess.class 
F. inside jarfile /opt/java/lib/Games.jar (with a correct manifest) 
G. inside jarfile /home/bob/downloads/Games.jar (with a correct manifest) 


Answer is C but I want to know how it is ........... 

回答

6

該類路徑顯式傳遞給java命令,因此它取代了CLASSPATH環境變量。答案B,D,E和F因此是不正確的。

A是錯誤的,因爲類名是games.Chess。由於包和目錄結構必須匹配,因此Chess.class文件必須位於遊戲文件夾中(在jar文件內部或外部)。

C是正確的。

G不正確,因爲您無法將* .jar傳遞給類路徑。即使Games.jar顯式地在類路徑中,清單在這裏也不起任何作用。

有關類路徑的文檔,請參閱http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html

+0

你的意思是「G不正確,因爲你不能將* .jar傳遞給類路徑」。我認爲這就是我們在這裏所做的,以便java命令可以在jar中查找適當的類文件。 –

+0

請閱讀我在答案中給出的鏈接。你可以傳遞'-cp/foo/*',而不是'-cp/foo/*。jar'。 –

+0

那麼當我們指定/foo/*.jar時會發生什麼? –