在资源中找到未签名的条目

时间:2013-07-29 12:09:02

标签: java jar jnlp java-web-start

我有以下JNLP文件:

<jnlp spec="1.0+" codebase="http://****:****" href="tcm2012.jnlp">
  <information>
    <title>TCM 2012</title>
    <vendor>Drift og Performance, *** Servicecenter</vendor>
    <homepage href="http://******"/>
    <description/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <j2se version="1.6+"/>
    <jar href="tcm2012.jar"/>
  </resources>
  <application-desc main-class="com.****.kundeservice.TCMApplication"/>
</jnlp>

现在,当我尝试从网上运行时,我收到以下错误:

Found unsigned entry in resource

有以下表现

com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://*****:****/tcm2012.jar
at com.sun.javaws.security.SigningInfo.getCommonCodeSignersForJar(Unknown Source)
at com.sun.javaws.security.SigningInfo.check(Unknown Source)
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.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

有谁知道如何解决这个问题?

5 个答案:

答案 0 :(得分:22)

这对我有用:

转到控制面板/ Java。

然后单击“设置”按钮并激活“在我的计算机上保留临时文件”选项。

这很奇怪,但它确实有效!

答案 1 :(得分:5)

如果使用较新的Java版本进行签名,则旧版Java版本也会出现此问题。

  • 使用1.8u74及更早版本登录所有版本
  • 使用1.8u101和更新版本使用1.7u80及更新版本但不适用于客户端上的旧版本。

符号算法似乎发生了不兼容的变化。

答案 2 :(得分:2)

我的应用程序遇到了类似的问题。

我使用javaws部署了一个java swing应用程序:

  • 当我使用JRE 1.6运行应用程序时,我得到异常
  • 当我使用JRE 1.7和JRE 1.8运行应用程序时,它可以正常工作

我检查了所有罐子,MANIFEST.MF等,一切都很好。 最后我发现我使用了一个新的TSA端点来签署我的罐子。

我从这个资源http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html读到了 为了生成时间戳,jarsigner使用RFC 3161中定义的时间戳协议(TSP)与TSA进行通信。成功时,TSA返回的时间戳令牌与签名一起存储在签名块文件中。

有人可以就此问题提供更多见解吗?特别是我不想被迫使用特定的TSA。 为什么TSA之间存在这种差异? 感谢

答案 3 :(得分:0)

我的情况是applet在META-INF文件夹中确实有未签名的条目。 ) 解决这个问题的一种方法是重新签名。 但在java 8中,自签名小程序demoted与无符号小程序几乎相同。并且applet不需要任何额外的权限。 因此只需un-signadd to trusted sites list即可。

答案 4 :(得分:0)

在我的 linux maschine(使用JDK 6 U45)上编译时遇到了同样的问题。 但是当我尝试启动使用Java 6 U45签名的应用程序时,我收到此错误

当我尝试使用较新的 Java版本(例如Java 8)启动应用程序时,它始终没问题,没有错误消息。

当我使用 windows maschine编译项目时(也使用6 Update 45),当我使用Java 6 U45启动时,它也很奇怪。

只需2美分...... 干杯!