Java Web Start Jar 签名问题? [英] Java Web Start Jar signing Issue?

查看:27
本文介绍了Java Web Start Jar 签名问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过 Java Web Start 运行此 Java 应用程序 (jar),但遇到了令人难以置信的困难.

I'm trying to run this Java application (jar) via Java Web Start and am having an incredibly difficult time.

这是我当前的 JNLP 源:

Here's my current JNLP source:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://localhost:8080/" href="Test.jnlp">
    <information>
        <title>Jnlp Testing</title>
        <vendor>YONG MOOK KIM</vendor>
        <homepage href="http://localhost:8080/" />
        <description>Testing Testing</description>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.6+" />
        <jar href="TestJnlp.jar" />
        <jar href="lib/appframework-1.0.3.jar"/>
        <jar href="lib/junit-4.7.jar"/>
        <jar href="lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar"/>
        <jar href="lib/org-netbeans-modules-java-j2seproject-copylibstask.jar"/>
        <jar href="lib/sqlite-jdbc-3.7.2.jar"/>
        <jar href="lib/swing-worker-1.1.jar"/>
    </resources>
    <application-desc main-class="proteotypic.ProteotypicQuantificationApp" />
</jnlp>

运行 JNLP 文件后,出现以下错误:

Upon running the JNLP file, I get the following Error:

JNLPException[category: Launch File Error : Exception: null : LaunchDesc:

---- here the 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)

我已经签署了除 lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar 之外的所有 jar - 如果我也签署了那个,我会得到一个不同的例外:

I have signed all the jars except lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar - if I sign that one too, I get a different exception:

com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://localhost:8080/lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

java.io.IOException: invalid SHA1 signature file digest for org/eclipse/swt/awt/SWT_AWT$4.class
at com.sun.deploy.cache.CacheEntry$9.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source)
at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source)
at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

在执行javaws -viewer"并重新运行 JNLP 后,我得到:

After doing "javaws -viewer" and re-running the JNLP, I get:

https://gist.github.com/3183636

推荐答案

一个 jnlp 中的所有 jar 都需要使用相同的签名进行签名,对于已签名的 jar 使用带有自己的 jnlp 的扩展由第三方提供.

All jars in one jnlp need to be signed with the same signature, use an extension with its own jnlp for jars that are signed by third parties.

有些 jar 使用 jar 中的原始签名进行加密(SQL 服务器的 JDBC 驱动程序),其他人在重新签名时不起作用(javahelp.jar)

Some jars use the original signature in the jar for crypto (the JDBC driver for SQL server) others do not work when re-signed (javahelp.jar)

您还可以通过将其包含在应用程序的 jnlp 中来避免签署它们的麻烦:

You can also save the trouble signing them by including this in your application's jnlp:

<extension name="javahelp" href="javahelp.jnlp"/>

这篇关于Java Web Start Jar 签名问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆