Исключение для веб-запуска JNLP

Поэтому я немного запутался в том, как подписать банку, чтобы она работала как jnlp.

В настоящее время у меня есть банка, она запускается, начинает загружать и проверять материал, затем доходит до конца, и появляется окно с сообщением о невозможности запуска, затем выдается исключение:

JNLPException[category: Launch File Error : Exception: null : LaunchDesc: 
 <jnlp codebase="http:/SomeHost:8080/_test/" href="jnlpcomponent1.jnlp" spec="1.0+">
<information>
  <title>jnlpcomponent1</title>
 <vendor>SUN_MICR</vendor>
 </information>
 <security>
 <all-permissions/>
  </security>
<resources>
 <jar href="lib/activation.jar" download="eager"/>
<jar href="lib/mail.jar" download="eager"/>
 </resources>
 <component-desc/>
 </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)

Я вполне уверен, что это как-то связано с неправильной/плохой подписью банки... Мне не помешала бы помощь в понимании того, что здесь происходит и как это исправить.

Большое спасибо.


person A_Elric    schedule 12.09.2012    source источник
comment
Как вы подписываете банку? Например, какова команда и результирующий вывод?   -  person    schedule 12.09.2012
comment
В том-то и дело, что я их вообще не подписываю, это с обычной чистой + сборкой JNLP от netbeans. Как правильно подписать jnlp?   -  person A_Elric    schedule 12.09.2012
comment
используйте jarsigner. Посмотрите здесь: java.sun.com/developer/Books/javaprogramming /JAR/sign/ Вам понадобится хранилище ключей, которое вы можете сделать сами, если хотите.   -  person    schedule 12.09.2012
comment
Есть ли рекомендуемый способ поделиться моим хранилищем ключей с командой, чтобы мы все могли подписываться как одна и та же сущность?   -  person A_Elric    schedule 12.09.2012
comment
Попробуйте поискать в базе данных ошибок/поднять ошибку. Но обязательно сначала проверьте JNLP, используя JaNeLA.   -  person Andrew Thompson    schedule 13.09.2012


Ответы (2)


Я совершенно уверен, что это как-то связано с неправильной/плохой подписью банки.

Именно так и случилось, одна из ваших банок не подписана (правильно)

Что всегда работает для меня: разархивируйте все банки, чем подпишите с помощью 1 процесса. Если подтвердится, что он работает, я удалю 1-2 jar, чтобы они соответствовали исходному дизайну развертывания. И вы будете знать, в какой банке проблема, чем проще ее исправить.

person Community    schedule 12.09.2012
comment
Цитата сверху: В том-то и дело, что я их вообще не подписываю, это при обычной чистой + сборке JNLP от netbeans. Как правильно подписать jnlp? - person A_Elric; 12.09.2012
comment
@Damien.Bell stackoverflow.com/questions/430755/ - person ; 12.09.2012

Вы можете использовать ANT для подписи файла JAR. Таким образом, вы можете подписывать файлы из среды IDE, что ускоряет рабочий процесс при развертывании приложения. Каждое изменение требует повторной подписи приложения.

<project name="YourProject" default="dist" basedir="jarsigning">

  <target name="signMainJar">
     <signjar jar="../dist/YourApp.jar" destDir="signed" alias="WhateverYouSetIt2" 
              keystore="fileNameOfCerticate" storepass="passw03d" lazy="true" /> 
     <echo message="The file was signed." /> 
  </target>
  <!-- Use this if you are using any libraries. These also need to be signed. -->
  <target name="signLibs">
    <signjar destDir="signed" alias="WhateverYouSetIt2"
              keystore="fileNameOfCerticate" storepass="passw03d" force="true">
       <path>
          <fileset dir="lib" includes="*.jar" /> 
       </path>
    </signjar>
    <echo message="The library files were signed." /> 
  </target>

 </project>

Прежде чем вы сможете запустить этот скрипт, вам нужно сначала создать каталог jarsigning и поместить сертификат (ключ), который будет использоваться для подписи. Внутри этой папки создайте папку с именем «signed», и именно сюда сценарий поместит ваш подписанный код. Используйте инструмент хранилища ключей, чтобы создать подписанный сертификат, если вы не приобрели его в уполномоченном органе, таком как Verisign или GoDaddy.

person Thorn    schedule 21.09.2012