2010-05-18 71 views
8

我想將我的jaxws升級到2.2(jdk1.6與jaxws 2.1捆綁在一起)。我的JDK是(我沒有安裝公共JRE):在jdk1.6中使用Endorsed目錄的確切方法是什麼

java version "1.6.0_20" 
Java(TM) SE Runtime Environment (build 1.6.0_20-b02) 
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode) 

jaxws' own doc他們解釋如何做到這一點:

一種方式來解決這個問題是複製JAXWS-api.jar文件和JAXB的API。罐入JRE認可目錄,這是$JAVA_HOME/lib/endorsed (or $JDK_HOME/jre/lib/endorsed)

但我不確定這是否對我的安裝有任何影響。對於初學者,我只定義了%JAVA_HOME%。和文件夾$JAVA_HOME/lib/endorsed是不存在的,所以我創建並複製了兩個罐子。但是,如果我這樣做(WSGEN是JAXWS工具)

wsgen -version 

我仍然得到:

JAX-WS RI 2.1.6 in JDK 6 

我也嘗試創建文件夾JAVA_HOME\jre\lib\endorsed(請注意,在他們說JDK_HOME文檔,但我只有JAVA_HOME我用這個路徑)。還是一樣的wsgen輸出。

我的問題是:

  1. 是什麼在文檔頁面JAVA_HOME和JDK_HOME之間的區別?任何重要的或只有兩種方式來引用JAVA_HOME?
  2. 'wsgen -version'是一種檢查使用的jaxws版本的有效方法,或者它總是調用原始jdk中的exe文件,但這並不意味着將使用認可的jar文件嗎?
  3. 任何人都知道非常詳細的步驟安裝jaxws2.2在jdk.16?

我發現this post有關於我所看到的一些線索,我認爲

回答

0

jre中包含的wsimport和wsgen作爲exe位於jre/bin目錄中,如果您仍然從命令行調用它,它仍然會運行Jax-WS 2.1實現。

要更新到Jax-WS 2.2,您需要從jaxws網站下載相關的JAX-WS 2.2.X RI。

您需要將內容提取到您的計算機上。

您還需要複製JAXWS-api.jar文件和JAXB-api.jar文件到endorsed目錄(按你原來的描述)

然而,而是採用wsgen.exe或wsimport.exe(如適用於您的項目),您現在需要使用jax-ws 2.2更新/下載中提供的那個。

在您從您的JAX-WS 2.2下載提取的JAXWS裏的目錄,你會看到一個bin目錄和4個文件(wsgen.bat,wsgen.sh,wsimport.bat,wsimport.sh)和這些是你需要運行的。

要運行它們,必須設置JAXWS_HOME環境變量(有關詳細信息,請參閱wsgen/wsimport.bat/sh文件)。

那現在應該讓你與JDK 1.6

+0

謝謝!正如你可能猜想的那樣,我不需要6年後的問題:)但也許有助於某人 – Persimmonium 2016-12-01 11:21:05

1

它不依賴於你的環境變量。 %JAVA_HOME%只是不知道您安裝了Java的位置或安裝的Java版本的文檔中的簡寫。

%JAVA_HOME%是指JRE(非開發人員可能擁有的常規運行時)。 %JDK_HOME%是指JDK的一個開發人員將使用的Java開發工具包的rood目錄。

更重要的是,您必須知道何時運行wsgen的位置,以及相應的JVM是否配置了包含jar的已批准目錄。

+0

運行JAX-WS 2.2無論在哪裏WSGEN正在運行,因爲我有在路徑JAVA_HOME%\ bin中。所以wsgen.exe將永遠是那裏的一個。但我希望它會加載罐子在背書目錄或 – Persimmonium 2010-05-18 19:09:26

+1

問題是關於如何認可? – 2012-03-15 13:46:51

11

你應該檢查你的系統屬性java.endorsed.dirs,例如,致電System.getProperty("java.endorsed.dirs")。在Windows機器上,這通常類似C:\Program Files\Java\jdk1.6.0_16\jre\lib\endorsed。把你想認可的jar文件放在這裏。如果該目錄不存在,只需創建它。

另一個選項是將jar放入您自己的首選項的目錄中,但通過添加命令行開關-Djava.endorsed.dirs=<Your endorsed jars directory>來覆蓋系統屬性。

相關問題