2011-05-05 69 views
0

我有一個學術問題,我沒有從Sun/Oracle中找到撥入的documentatino。何時檢查和使用Jar文件中的Class-Path屬性

我有一組JAR文件和Java虛擬機啓動這樣的:

java -cp one.jar:two.jar:helper.jar my.company.project.Main 

正如你可以看到我不使用-jar選項,但給的類路徑。 helper.jar只有一個清單文件,它定義了一個包含所需剩餘jar文件的Class-Path。

因爲我沒有使用-jar命令行選項我想知道是否評估和使用該清單類路徑。 (是的,我知道什麼-jar呢,我知道主要類是什麼,我知道如何使用類路徑與-罐。我只是不知道它是否工作沒有使用-jar

或澄清我的問題:它是否工作可靠,並在官方Sun/Oracle文檔中記錄的某處?

謝謝

+1

據我所知,當使用'-jar'時,'Main-Class' **和**'Class-Path'都只使用** **。 – 2011-05-05 16:40:50

+0

是的,這是一個有效的答案 – 2011-05-05 18:06:05

+0

@JoachimSauer恐怕你錯了。 Manifest中的類路徑也可以在沒有-jar開關的情況下使用。請參閱下面的答案。用兩個類和兩個JAR文件構建一個小樣本來證明它很容易。 – jschreiner 2015-03-24 14:08:59

回答

1

從JAR文件的清單類路徑條目總是將使用該JAR加載類時延長類路徑。如果您使用-jar開關,則沒有什麼區別。

我其實感到驚訝這種行爲,但它很容易用兩班一個簡單的例子,讓B.參考B.把每一類在它自己的JAR文件複製。向A.jar添加清單,其中包括Class-Path: B.jar。然後,以下命令將正確解析B:java -cp A.jar A

這也在這裏描述How the Java Launcher Finds JAR-class-path ClassesJava啓動器如何查找JAR類路徑類

+0

在我回答的第一個版本,我寫了「Java的罐子a.jar文件A」這是當然錯的,因爲我想指出的是,它的作品即使不使用「罐子」。現在糾正了這個錯誤。 – jschreiner 2015-03-24 16:07:37

相關問題