我想将jaxws升级到2.2(jdk1.6与jaxws 2.1捆绑在一起)。我的jdk是(我没有安装public 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自己的文档中,他们解释了如何做到这一点:
解决此问题的一种方法是将jaxws-api.jar和jaxb-api.jar复制到JRE认可的目录$JAVA_HOME/lib/endorsed (or $JDK_HOME/jre/lib/endorsed)中。
但是我不确定这对我的安装是否有任何影响。对于初学者,我仅定义了%JAVA_HOME%。文件夹$JAVA_HOME/lib/endorsed不存在,因此我创建并复制了两个jar。但是如果我这样做(wsgen是来自jaxws的工具)
wsgen -version
我仍然得到:
JAX-WS RI 2.1.6 in JDK 6
我还尝试创建文件夹JAVA_HOME\jre\lib\endorsed(请注意,在文档中他们说的是JDK_HOME,但由于我只有JAVA_HOME,因此使用了此路径)。仍然是相同的wsgen输出。
我的问题是:
文档页面中的JAVA_HOME和JDK_HOME有什么区别?有什么重要的或仅两种引用JAVA_HOME的方法吗?
'wsgen -version'是检查使用的jaxws版本的有效方法还是总是在原始jdk中调用exe,但这并不意味着将使用认可的jar?
有谁知道在jdk.16中安装jaxws2.2的非常详细的步骤?
我发现这篇文章暗示了我所看到的一切
您应该检查系统属性java.endorsed.dirs,例如通过调用System.getProperty("java.endorsed.dirs")。在Windows计算机上,通常类似于C:\Program Files\Java\jdk1.6.0_16\jre\lib\endorsed。将您要认可的jar文件放在这里。如果该目录不存在,则创建它。
另一个选择是将罐子放在您自己喜欢的目录中,但是通过添加命令行开关-Djava.endorsed.dirs=覆盖系统属性。
它与环境变量无关。 %JAVA_HOME%只是文档中的简写,它不知道Java的安装位置或Java版本。
%JAVA_HOME%是指JRE(非开发人员将拥有的常规运行时)。 %JDK_HOME%指开发人员将使用的JDK(Java开发工具包)的根目录。
不仅如此,您还必须知道何时从何处运行wsgen,并且相应的JVM配置了包含jars的认可目录。
无论在哪里运行wsgen,因为我的路径中都有JAVA_HOME% bin。 因此,wsgen.exe将永远是其中的一个。 但我希望它可以将罐子装到认可的目录中
问题是关于如何认可?
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复制到认可的目录中(按照您的原始描述)
但是,现在不使用wsgen.exe或wsimport.exe(适用于您的项目),而现在需要使用jax-ws 2.2更新/下载中提供的服务。
在从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
谢谢! 正如您可能猜到的,我在问题后6年不需要:)但也许可以帮助某人