我想将我的jaxws升级到2.2(jdk1.6与jaxws 2.1捆绑在一起)。我的jdk是(我没有安装公共jre):
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.jar复制到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输出。
我的问题是:
我发现this post对我所看到的内容有一些暗示
答案 0 :(得分: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>
来覆盖系统属性。
答案 1 :(得分:1)
它与您的环境变量无关。 %JAVA_HOME%只是文档中的简写,它不知道您安装Java的位置或安装的Java版本。
%JAVA_HOME%是指JRE(非开发人员可以使用的常规运行时)。 %JDK_HOME%是指JDK的一个rood目录,一个Java开发工具包,开发人员可以使用的东西。
更重要的是,你必须知道运行wsgen的时间,并且相应的JVM配置了一个包含jar的背书目录。
答案 2 :(得分: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复制到背书目录中(根据您的原始描述)
但是,您现在需要使用jax-ws 2.2更新/下载中提供的那个,而不是使用wsgen.exe或wsimport.exe(适用于您的项目)。
在您从JAX-WS 2.2下载中提取的jaxws-ri目录中,您将看到一个bin目录和4个文件(wsgen.bat,wsgen.sh,wsimport.bat,wsimport.sh)而这些是您需要运行的。
要运行它们,您必须设置JAXWS_HOME环境变量(有关详细信息,请参阅wsgen / wsimport.bat / sh文件)。
现在应该允许您使用JDK 1.6运行JAX-WS 2.2