【问题标题】:How to sign JNLP file?如何签署 JNLP 文件?
【发布时间】:2018-09-19 06:02:58
【问题描述】:

我有一个使用 ANT 脚本构建的 Java 7 应用程序(应用程序被构建到一个 jar 文件中)并使用 JNLP 文件部署到客户端。

目前我需要将一些“属性”放入 JNLP 文件中,但该属性在我的应用程序中不可见,除非我将该特定属性标记为“安全”(意味着将“jnlp.”作为属性名称前缀)。这行得通,但我认为这不是向应用程序提供我的自定义属性的好方法。

为了按我应该的方式使用 jnlp 属性,我必须按照here 的描述“签署”jnlp 文件。

由于我使用的是 Java 7,所以制作 JNLP 模板的能力很好,但我不确定是否将描述的 JNLP 模板放入我的项目结构中,也不知道如何将它包含在我的 Ant 构建中。

我对 Ant 不是很“流利”。

【问题讨论】:

    标签: java ant jnlp


    【解决方案1】:

    您需要在 Ant 中使用 signJar 任务。这是文档的链接以及如何使用它的示例。

    https://ant.apache.org/manual/Tasks/signjar.html

    【讨论】:

    • 我已经用它来签署 jars,像这样(在其他设置中):
    【解决方案2】:

    您需要将 JNLP 添加到链接中指定的目录和名称下的 JAR 文件中,这是通过 <jar> 任务完成的,然后使用 <signjar> 任务对其进行签名。

    【讨论】:

    • 你能说得更具体些吗?在“jar”下我只有 2 个子节点:“manifest”和
    【解决方案3】:

    如文章所述,如果您想要签署您的 JNLP 文件,您必须将其放入 JNLP-INF 子目录中。所以你的项目结构应该是这样的:

    YourApp.jar:
      \- com (folder with your java classes)
      \- META-INF (folder which contains the manifest)
      \- JNLP-INF (folder which contains your.jnlp file)
      \- ... (other folders like res, dtd etc.)
    

    JAR 文件以通常的方式创建和签名 - 不需要额外的任务。请注意,应用程序启动时,使用的 JNLP 文件必须与签名 JAR 中的 JNLP 文件相同才能运行应用程序。

    在“jar”下我只有 2 个子节点:“manifest”和文件集 dir="${workspace.path}${project.name}/bin"

    这意味着将创建一个清单,并且 /bin 目录中的每个文件和文件夹都将包含在您的 app.jar 文件中。所以例如eclipse 自动将每个源目录放入 /bin 文件中。因此,根据您使用/不使用的 IDE 类型,您必须手动复制 JNLP-INF。由于总是在整个 jar 文件上进行签名,因此您无需执行任何操作...

    【讨论】:

      猜你喜欢
      • 2021-02-23
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 2012-11-07
      • 2013-10-11
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多