【问题标题】:Where can I find the jnlp api jar in jdk 7? [duplicate]我在哪里可以找到 jdk 7 中的 jnlp api jar? [复制]
【发布时间】:2012-11-25 20:17:32
【问题描述】:

可能重复:
Can’t find jnlp.jar in JDK 1.7

对于jdk 1.6,可以在这里找到(根据Where can i download JNLP.jar):

${java.home}/sample/jnlp/servlet/jnlp.jar

但是,我在我的 jdk 7 主页中没有看到这个目录。

它去哪儿了?

【问题讨论】:

    标签: java jnlp java-web-start


    【解决方案1】:

    在 java 7 javax.jnlp.* 包是 jre 的一部分,可以在以下路径的 javaws.jar 中找到

    C:\Program Files\Java\jre7\lib\javaws.jar
    

    如果使用 maven:

    <dependency>
        <groupId>javax.jnlp</groupId>
        <artifactId>jnlp-api</artifactId>
        <version>7.0</version>
        <scope>system</scope>
        <systemPath>${java.home}/lib/javaws.jar</systemPath>
    </dependency>
    

    如果您在使用 jnlp-download-servlet 和 jnlp-servlet.jar

    之前作为 jdk 的一部分提供的示例现在必须从 oracle 单独下载: Scroll down to "demos and samples"

    有人很好,并在 maven repos 中放了一份副本(如果 oracle 更新他们的,我们不能确定它不会落后..):

    <dependency>
        <groupId>org.codehaus.mojo.webstart</groupId>
        <artifactId>webstart-jnlp-servlet</artifactId>
        <version>1.0-6.0.02_ea_b02.2</version>
    </dependency>
    

    编辑:正如 Zalumon 在他的回答中所说,javax.jnlp.* api 也可以在示例包中找到。应该建议下载此文件并将 jnlp.jar 从那里添加到类路径中,而不是像我上面建议的那样添加 javaws.jar。

    【讨论】:

    • 如果它是 JRE 的一部分,那么为什么要使用特殊技巧使其成为 maven 依赖项?
    • 好问题,即使它是 jre 的一部分,我也必须将它添加到 eclipse 中的项目类路径中,以便能够对 javax.jnlp.* 包 API 进行编码。当应用程序作为 javaws 启动时,jre/系统会提供它们。
    • 听起来是因为“javaws”命令是 JRE 的一部分,但 jnlp 类不在默认类路径上。那么也许只是一个 API maven 工件?
    • 我正在比较 org.codehaus.mojo.webstart:webstart-jnlp-servlet:1.0-6.0.02_ea_b02.2org.codehaus.mojo.webstart-jnlp-servlet:webstart-jnlp-servlet:1.0-beta-4 中的代码,看起来两者中的后者是可以使用的。它似乎得到了维护,因为我一眼就看到了其中的几个错误修复。
    【解决方案2】:

    感谢您提供的所有提示 - 我不知道有单独的示例下载。

    这就是我最终做的事情(请注意,我有自己的远程存储库,所以这可能不适用于您):

    我从 Oracle 的网站下载了 jdk7 示例。在里面我找到了一个 jnlp.jar,它只包含 jnlp API:

    sample\jnlp\servlet\jnlp.jar
    

    我将其作为 jnlp-api-1.7.jar 部署到我的私有远程存储库(工件),然后像这样配置 pom.xml('provided' 范围,因为在运行时这些类由 javaws.jar 提供,正如所指出的那样由 Aksel Willgert 出品):

    <dependency>
      <groupId>javax.jnlp</groupId>
      <artifactId>jnlp-api</artifactId>
      <version>1.7</version>
      <scope>provided</scope>
    </dependency>
    

    为了完整起见,放一张部署到工件的屏幕截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2014-11-20
      相关资源
      最近更新 更多