2012-07-26 7 views
2

J'essaie d'exécuter cette application Java (jar) via Java Web Start et j'ai un temps incroyablement difficile.Java Web Start Jarre de signature Problème?

Voilà ma source de courant JNLP:

<?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> 

Lors de l'exécution du fichier JNLP, je reçois l'erreur suivante:

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) 

J'ai signé tous les pots sauf lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar - si je signe que l'on aussi, je reçois une exception différente:

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) 

Après avoir fait "javaws -viewe r » et de refaire le JNLP, je reçois:

https://gist.github.com/3183636

+0

Essayez 'javaws -viewer' pour effacer toute trace de vos tentatives précédentes. – pmoleri

+0

Merci. J'ai posté le résultat ci-dessus. – sudo

+0

Il semble que la première exception, comme l'a dit récuré, vous devez signer tous les bocaux avec la même singularité. Les avez-vous signés tous avant la dernière tentative? – pmoleri

Répondre

1

Vous devez signer le fichier jar. Vous pouvez le faire vous-même en utilisant keytool, mais si vous envisagez de le déployer, je vous recommande de le faire signer par Verisign ou par une entreprise similaire.

Si vous avez juste besoin d'un correctif temporaire, signing it yourself pour le test est correct.

Voici un facile à utiliser tutorial.

+0

Merci ou la réponse rapide. Cependant, j'ai déjà signé mon fichier jar. J'ai également parcouru et signé toutes les bibliothèques référencées à l'exception de lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar. Des idées? – sudo

+0

Hmm, je ne suis pas sûr. Peut-être ajouter cela à votre question et quelqu'un d'autre pourra vous aider! Pardon! –

+0

@ user1509227 Avez-vous essayé de signer cette bibliothèque aussi pour voir si cela fait une différence? – assylias

1

Tous les bocaux doivent être signés avec la même signature.

2

Tous les bocaux dans un jnlp doivent être signés avec la même signature, utilisez une extension avec son propre jnlp pour les bocaux signés par des tiers.

Certains pots utilisent la signature originale dans le pot pour Crypto (le pilote JDBC pour le serveur SQL), d'autres ne fonctionnent pas quand re-signé (javahelp.jar)

Vous pouvez également enregistrer la peine de les signer en incluant ceci dans la jnlp de votre application:

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