2012-05-07 68 views
1

基本上有兩個問題:Java - 在Linux上放置第三方JAR並設置類路徑的位置

1)我的第三方JAR應該去哪裏?目前我不道德地將它們放入我的應用程序包中,這是不道德的,例如,因爲第三方庫是較低的級別,應該能夠依賴我的所有應用程序。

2)應該在哪裏設置classpath?我見過的教程聽起來像它應該是一個全局變量,但我不知道這是因爲它需要依賴於項目,即項目X需要庫L和M,但項目Y需要庫M和N.目前我只是爲每個應用程序創建一個「cp」文件,但我想知道是否有更規範的風格.Z

+1

你最好在2個線程中提問2個問題,因爲你應該接受最好的正確答案。現在,如果您標記q1的正確答案被接受,那麼您可能不會得到更多答案。從這個問題看,沒有人會知道你爲什麼接受答案 - q1或q2回答,或者兩者都可以? –

回答

7

罐子,你把

JAVA_HOME/jre/lib/ext 

不需要指定在類路徑中。所以這對於你經常使用的庫例如apache-commons很有用。

很少使用的庫更適合用類路徑調用。

設置類路徑取決於您的使用情況,以及您是在單個用戶計算機上工作,無論它是客戶端還是服務器。許多Java應用程序都是針對服務器製作的,而您恰好只有一個類路徑。

+0

在我的CentOS 7.0上,它是'/ usr/lib/jvm/jre/lib/ext /' –

+2

儘管這樣做 - 它是一個非常糟糕的主意。請參閱[鏈接](http://stackoverflow.com/questions/2068961/is-putting-external-jars-in-the-java-home-lib-ext-directory-a-bad-thing)進行討論。 –

1

1>在我們的項目中,我們做了一個「第三方」項目,其中只包含第三方罐子。主要應用程序是在一個單獨的項目中,它只是引用第三方項目。

因此,第一個問題的答案可能是,創建一個名爲「第三方」的單獨項目,並將所有罐子放在那裏。

2> 一般來說,在Linux下,你讓shell變量,並將其指向您的罐子/類文件象下面這樣: -

# export GWT_HOME=/opt/smartgwt.jar 

然後,當你調用Java,可以做這樣的事情: -

# java -cp $GWT_HOME <your_main_class>