所以我对如何签名jar以使其作为jnlp运行感到困惑。
目前我有一个jar,它运行,开始下载和验证东西,然后它到达终点并弹出一个窗口说它无法启动,然后它给出了异常:
JNLPException[category: Launch File Error : Exception: null : LaunchDesc:
<jnlp codebase="http:/SomeHost:8080/_test/" href="jnlpcomponent1.jnlp" spec="1.0+">
<information>
<title>jnlpcomponent1</title>
<vendor>SUN_MICR</vendor>
</information>
<security>
<all-permissions/>
</security>
<resources>
<jar href="lib/activation.jar" download="eager"/>
<jar href="lib/mail.jar" download="eager"/>
</resources>
<component-desc/>
</jnlp>
]
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我很确定这与罐子签名错误/糟糕有关...我可以帮助理解这里发生的事情以及如何修复它。
非常感谢。
答案 0 :(得分:1)
我很确定这与正在签名的jar有关 错误/糟糕
确实发生了这种情况,你的一个罐子没有签名(正确)
什么一直对我有用: 用1个进程解压缩所有罐子而不是签名。如果确认它正常工作,那么我将删除1-2 jar以匹配原始部署设计。你会知道什么是问题,而不是更容易解决它。
答案 1 :(得分:0)
您可以使用ANT对JAR文件进行签名。这样,您可以在IDE中对文件进行签名,这样可以在部署应用程序时更快地完成工作流程。每次更改都需要您重新签署申请。
<project name="YourProject" default="dist" basedir="jarsigning">
<target name="signMainJar">
<signjar jar="../dist/YourApp.jar" destDir="signed" alias="WhateverYouSetIt2"
keystore="fileNameOfCerticate" storepass="passw03d" lazy="true" />
<echo message="The file was signed." />
</target>
<!-- Use this if you are using any libraries. These also need to be signed. -->
<target name="signLibs">
<signjar destDir="signed" alias="WhateverYouSetIt2"
keystore="fileNameOfCerticate" storepass="passw03d" force="true">
<path>
<fileset dir="lib" includes="*.jar" />
</path>
</signjar>
<echo message="The library files were signed." />
</target>
</project>
在运行此脚本之前,您需要先创建一个jarsigning目录并放置一个用于签名的证书(密钥)。在该文件夹中,创建一个名为“signed”的文件夹,这是脚本放置已签名代码的位置。如果您尚未从Verisign或GoDaddy等授权机构购买证书,请使用keystore tool创建自签名证书。