如何签名JNLP文件?

时间:2015-12-13 21:16:16

标签: java ant jnlp

我正在使用ANT脚本构建Java 7应用程序(应用程序内置于jar文件中)并使用JNLP文件部署到客户端。

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

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

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

我对Ant不是很“流利”。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

正如文章所描述的,如果要签署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文件相同才能运行应用程序。

  

&#34; jar&#34;我只有2个子节点:&#34; manifest&#34;和fileset dir =&#34; $ {workspace.path} $ {project.name} / bin&#34;

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