2012-07-26 4 views
2

Java Web Start를 통해이 Java 응용 프로그램 (jar)을 실행하려고하는데 엄청난 어려움을 겪고 있습니다.Java Web Start Jar에 서명 할 때?

여기에 내 현재의 JNLP 소스입니다 : 내가 lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar 제외한 모든 단지에 서명

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) 

- 나는 그 일에 서명하는 경우 :

<?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 파일을 실행하면, 나는 다음과 같은 오류가 발생합니다 역시 다른 예외가 발생합니다.

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 -viewe R "및 JNLP를 다시 실행, 내가 얻을 :

https://gist.github.com/3183636

+0

이전 시도의 흔적을 지우려면'javaws -viewer '를 사용해보십시오. – pmoleri

+0

고맙습니다. 위 결과를 게시했습니다. – sudo

+0

첫 번째 예외처럼 보였습니다. 다시 말하면 동일한 항아리에 모든 항아리에 서명해야한다고했습니다. 마지막 시도 전에 서명 한 모든 서명을 했습니까? – pmoleri

답변

1

당신은 jar 파일에 서명해야합니다. keytool을 사용하여 직접 할 수도 있지만 배포하려는 경우 Verisign 또는 이와 유사한 회사에서 서명하도록하는 것이 좋습니다.

임시 수정 만 있으면 테스트 용으로 signing it yourself이 좋습니다.

여기에 사용하기 쉬운 tutorial입니다.

+0

감사 또는 빠른 답장. 그러나 이미 jar 파일에 서명했습니다. 또한 lib/org.eclipse.swt.win32.win32.x86_64_3.100.0.v4233d.jar를 제외한 모든 참조 된 라이브러리에 서명하고 서명했습니다. 어떤 아이디어? – sudo

+0

흠, 확실하지 않습니다. 어쩌면 질문에 추가하면 다른 사람이 도울 수 있습니다! 죄송합니다! –

+0

@ user1509227 해당 라이브러리에 서명하여 차이가 있는지 확인하려고 시도 했습니까? – assylias

1

모든 jar는 동일한 서명으로 서명해야합니다.

2

모든 jars 하나의 jnlp은 동일한 서명으로 서명해야하며, 제 3자가 서명 한 jars에는 고유 한 jnlp가있는 확장자를 사용하십시오. 다시 서명 (javahelp.jar하는)

또한 문제를 포함하여 그들을 서명을 절약 할 수 있습니다 때

일부 항아리가 작동하지 않습니다 암호 (SQL 서버에 대한 JDBC 드라이버) 다른 사람의 항아리에 원래 서명을 사용 응용 프로그램의 jnlp :

<extension name="javahelp" href="javahelp.jnlp"/> 
관련 문제