【问题标题】:what is the exact way to use Endorsed directory in jdk1.6在jdk1.6中使用Endorsed目录的确切方法是什么
【发布时间】:2011-02-21 00:21:50
【问题描述】:

我想将我的 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' 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 输出。

我的问题是:

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

我发现 this post 对我所看到的我的想法有一些提示

【问题讨论】:

    标签: java jax-ws endorsed


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

      • 谢谢!正如您可能猜到的那样,我不需要问题后 6 年 :) 但也许可以帮助某人
      【解决方案3】:

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

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

      不仅如此,您还必须知道运行 wsgen 的时间是从哪里运行的,并且相应的 JVM 配置了一个包含 jar 的认可目录。

      【讨论】:

      • 无论 wsgen 在哪里运行,因为路径中有 JAVA_HOME%\bin。所以 wsgen.exe 将永远是其中的那个。但我希望它将罐子加载到认可的目录或其他东西中
      • 问题是如何背书?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2017-12-10
      • 2015-11-13
      相关资源
      最近更新 更多