8

我想将我的 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 自己的文档中,他们解释了如何做到这一点:

解决此问题的一种方法是将 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 输出。

我的问题是:

  1. 文档页面中的 JAVA_HOME 和 JDK_HOME 有什么区别?有什么重要的或只是引用 JAVA_HOME 的两种方式?
  2. 'wsgen -version' 是检查使用的 jaxws 版本的有效方法,还是总是调用原始 jdk 中的 exe,但这并不意味着将使用认可的 jar?
  3. 任何人都知道在 jdk.16 中安装 jaxws2.2 的非常详细的步骤吗?

我发现这篇文章暗示了我所看到的我的想法

4

3 回答 3

11

您应该检查您的系统属性java.endorsed.dirs,例如通过调用System.getProperty("java.endorsed.dirs"). 在 Windows 机器上,这通常类似于C:\Program Files\Java\jdk1.6.0_16\jre\lib\endorsed. 把你要背书的jar文件放在这里。如果该目录不存在,只需创建它。

另一种选择是将罐子放在您自己喜欢的目录中,但通过添加命令行开关来覆盖系统属性-Djava.endorsed.dirs=<Your endorsed jars directory>

于 2012-07-14T09:39:52.170 回答
1

它与您的环境变量无关。%JAVA_HOME% 只是文档中的简写,它不知道您在哪里安装了 Java 或您安装了什么版本的 Java。

%JAVA_HOME% 指的是 JRE(非开发人员将拥有的常规运行时)。%JDK_HOME% 指的是 JDK 的 rood 目录,一个 Java 开发工具包,开发人员会使用的东西。

不仅如此,您还必须知道何时运行 wsgen 运行它的位置,以及相应的 JVM 配置有一个包含 jar 的认可目录。

于 2010-05-18T17:52:47.690 回答
1

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

于 2016-12-01T11:11:57.903 回答