java - JNLP - 如何部署运行的应用程序并创建用于启动 a.jar 的桌面图标?

标签 java installation jnlp java-web-start package-managers

如何修复此错误?我的部署 dist 中包含我的网络服务器中的所有 jar 文件。但是一旦我按下 icon.jnlp 它就会说这个错误。

图标.jnlp:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://localhost:007/dist" href="icon.jnlp" spec="1.0+">
  <information>
    <title>Sample</title>
    <vendor>Sample</vendor>
    <homepage href=""/>
    <description>Sample</description>
    <description kind="short">Sample</description>

    <icon href="load.png" kind="splash"/>
    <icon href="logo.png" kind="default"/>

    <shortcut online="false">
      <desktop/>
        <menu submenu="Sample">
          <menu submenu="Sample Managing System"/>
        </menu>
    </shortcut>
    <offline-allowed/>
  </information>

  <security>
    <all-permissions/>
  </security>

  <resources>
    <j2se version="1.5+"/>
    <jar eager="true" href="http://localhost:007/dist/a.jar" main="true"/>
  </resources>

  <application-desc main-class="main.main">
  </application-desc>

</jnlp>

enter image description here

跟进:

1) 下载 JAR Maker(适用于 Linux、Windows)

enter image description here

  • 所有第三方 jar
  • 您的部署 jar

  • 输出目录:/var/tmp/project/dist

  • 转到 JAR 签名者选项卡

    • 输入jar文件:a.jar
      • jarsigner 位置:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/bin/jarsigner
      • keystore 文件
      • 如果未创建 key > 单击“生成 keystore ” - keytool位置:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/bin/keytool - 输出 keystore 文件:/var/tmp/keystore - keystore 别名:记住这个名称 - 公钥:123456 - 私钥:123456 - 有效期:0表示6个月 - keystore 身份 - 有效信息... - 按生成 keystore - 它将创建/var/tmp/keystore 和 java.key.public 和 java.key
    • keystore 身份验证

      • keystore 别名:记住这个名称
      • 公钥:123456
      • 私钥:123456
    • 点击签名 JAR! > 将告诉您是否失败或成功

重复此过程,对所有其他 JAR 文件进行签名!

2) 部署到着陆空间

3) 确保引用了所有第三方

之前:

  <resources>
    <j2se version="1.5+"/>
    <jar eager="true" href="http://localhost:007/dist/a.jar" main="true"/>
  </resources>

之后:

  <resources>
    <j2se version="1.5+"/>
    <jar eager="true" href="a.jar" main="true"/>
    <jar eager="true" href="lib/b.jar" main="flas"/>
    <jar eager="true" href="lib/c.jar" main="flas"/>
    <jar eager="true" href="lib/d.jar" main="flas"/>
    <jar eager="true" href="lib/e.jar" main="flas"/>
    <jar eager="true" href="lib/f.jar" main="flas"/>
    <jar eager="true" href="lib/g.jar" main="flas"/>
    <jar eager="true" href="lib/h.jar" main="flas"/>
    <jar eager="true" href="lib/i.jar" main="flas"/>
  </resources>

最佳答案

请务必使用 JaNeLA 检查 JNLP .

Do i have to sign now all my other third party jars also?

这取决于它们的部署方式。如果它们位于扩展中,则扩展可以具有不同的安全级别。如果安全级别是沙盒的,则不需要对 Jars 进行签名。

但是您可能会面临“混合签名和未签名资源”警告。我不确定它是否适用于扩展之间。有很多方法可以解决这些警告,但我认为部署所有签名的 Jars 会更简单,无论它们所使用的扩展的安全级别如何。

关于java - JNLP - 如何部署运行的应用程序并创建用于启动 a.jar 的桌面图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9531759/

相关文章:

android - 在 Android 12 上安装 Flutter 应用发布版本时出错 : "Parse Error : There was a problem parsing the package"

database - Wix 可以默默地不覆盖数据库吗

java - 有没有办法在沙箱中部署 java web start 应用程序而不会出现可怕的警告?

Java Web Start Jar 签名问题?

java - 在 jnlp 文件上传递参数

java - JTable 由 ArrayList 填充,结果不好

java - 设置 JDialog 的最大尺寸?

java - Maven Surefire 插件未运行同一原始类的第二个测试类

java - Java中while循环的顺序

github - 如何在 Windows 7 64 位上安装 GitHub 时修复此错误