java - jar 在浏览器中启动时未签名,但在 javaws 中则未签名

标签 java security java-web-start

我在本地网络服务器上有一个小型 Webstart 应用程序,可通过 localhost:5000/games/game.jnlp 访问,通过 Firefox 和 Chromium 访问该应用程序会导致以下错误:

net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize application. 
    at net.sourceforge.jnlp.Launcher.createApplication(Launcher.java:778)
    at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:552)
    at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:889)
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Application Error: Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed.
    at net.sourceforge.jnlp.runtime.JNLPClassLoader.setSecurity(JNLPClassLoader.java:312)
    at net.sourceforge.jnlp.runtime.JNLPClassLoader.<init>(JNLPClassLoader.java:232)
    at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:357)
    at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:330)
    at net.sourceforge.jnlp.Launcher.createApplication(Launcher.java:770)
    ... 2 more

以 Swing 风格弹出错误消息。

我的 JNLP 文件:

<?xml version="1.0" encoding="utf-8"?>
  <jnlp
    spec="1.0+"
    href="game.jnlp"
    >

  <information>
    <title>Space Shapes</title>
    <vendor>WorldsProject</vendor>
    <homepage href="http://www.worldsproject.org"/>
    <description>A game where you must shoot shapes in space.</description>
    <description kind="short">A game where you must shoot shapes in space.</description>
  </information> 
  <security>
    <all-permissions/>
  </security>   
  <resources>
    <j2se href="http://java.sun.com/products/autodl/j2se" version="1.4+" max-heap-size="512m"/>
    <jar href="game.jar"/>  
    <jar href="resources.jar"/>
    <jar href="slick.jar"/>
    <jar href="jogg-0.0.7.jar"/>    
    <jar href="jorbis-0.0.15.jar"/>
    <jar href="lwjgl.jar"/>
    <nativelib href="lwjgl-libs.jar"/>
  </resources>

  <application-desc main-class="org.worldsproject.fluxware.spaceshapes.SpaceShapesGame"/>

</jnlp>

我已确认所有内容均已正确签名

jarsigner -verify -certs -verbose

我用 JaNeLA 查看了 jnlp,所有绿色和黄色消息,没有任何错误。我测试过其他网络启动,除了我的之外,所有这些都可以工作。

编辑,我所有 jar 和 jnlp 文件的链接:https://www.dropbox.com/sh/hzagv1e4t4jr43t/WA-LVXp5tc

最佳答案

如果您的 jnlp 使用命令行初始化,那么您也需要在浏览器中设置 javaws (Sun JDK) 的位置,即当您的浏览器要求打开您的javaws 应用程序提供您的 sun java 位置的路径。

此外,如果 href 表示相对 URL,则它必须引用代码库子目录的位置。在您的代码库中指定 URL。

关于java - jar 在浏览器中启动时未签名,但在 javaws 中则未签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433283/

相关文章:

java - 我在类里面是否正确使用了 this 关键字?

java - 将 javax json 从 1.0.2 更新到 1.1

php - 如何防止 PHP 中的 SQL 注入(inject)?

asp.net-mvc-3 - SSL 会在我的 asp.net mvc3 web 应用程序中加密查询字符串和发布请求的正文吗

java - 自 Java 1.7.0u40 以来,Java WebStart 应用程序的启动延迟很长

java - 如何在 Hibernate 中使用 order 子句

java - 如何找到哪个应用程序创建了每个 c3p0 连接池?

java - 将信息传递给 Java Web Start?

.net - 受密码保护的 .NET ClickOnce 部署?

java - IcedTea 1.8 版无法打开任何 JNLP 文件