2014-12-29 58 views
0

似乎有很多問題詢問如何從java內部的或使用應用程序中獲取給定導入的類路徑,但我無法在SO上找到任何關於如何在沒有使用任何工具或Java功能的情況下找到給定導入的相應路徑。給定類路徑的相應導入

我只是想知道導入應該如何根據$CLASSPATH的內容進行映射。

注意我很新來java;所以我很抱歉,如果答案是痛苦明顯的。

// does this map to "$CLASSPATH/more/libs/for/you/you.jar" 
import more.libs.for.you; 

之所以我需要知道這是因爲我試圖找出如何正確包裝/安裝jna,這樣我可以正確導入。目前,它的/usr/share/java/jna下安裝,但(根據docs,如果我正確地理解他們)正確導入com.sun.jna.*但是當我嘗試導入jna我得到:

error: package com.sun.jna does not exist 

我甚至嘗試/usr/share/java/com/sun/jna/下安裝jna,但也沒有工作,我仍然有同樣的錯誤。

$CLASSPATH/usr/share/java/*:$PWD:$CLASSPATH

回答

0

在Java中,import完全是語法糖。它不會將事物添加到類路徑中或將其加載到運行時環境中。它只是讓你編寫代碼,而不必在每次提到類時都包含完整的類路徑。當Java被編譯成Java字節碼時,所有類都被其完整路徑引用。

+0

我不明白這是如何回答我的問題。如果它位於'/ usr/share/java//COOLNAME.jar'下,我該如何導入'.jar'? java只是知道'COOLNAME.jar'是如何導入的:'import sys.bunchOfMonkeys.COOLNAME;'只要它在類路徑中? –

+0

你*無法導入一個jar *。要使用.jar文件中的類,您需要將該.jar文件添加到類路徑或在運行時用'URLClassLoader'加載它 – ControlAltDel

+0

是否必須顯式添加到類路徑,還是通配符工作? –