1

そのため、jarをjnlpとして実行するためにjarに署名する方法について少し混乱しています。

現在、私はjarを持っています。それは実行され、ダウンロードと検証を開始します。その後、最後に到達し、起動できないことを示すウィンドウがポップアップし、例外が発生します。

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)

私はこれがjarの署名が間違っている/不十分であることに関係しているとかなり確信しています...ここで何が起こっているのか、そしてそれを修正する方法を理解するのに役立つかもしれません。

どうもありがとう。

4

2 に答える 2

1

私はこれがjarが間違って/不十分に署名されていることと関係があるとかなり確信しています

まさにその出来事、あなたの瓶の1つが(適切に)署名されていません

私にとって常に機能しているのは、1つのプロセスで署名するよりもすべてのjarファイルを解凍することです。動作していることが確認された場合は、元の展開設計と一致するように1〜2個のjarを削除します。そして、あなたはそれを修正するよりも、どのjarで問題があるかを知るでしょう。

于 2012-09-12T16:09:20.697 に答える
0

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などの付与機関から証明書を購入していない場合は、キーストアツールを使用して自己署名証明書を作成します。

于 2012-09-21T18:40:45.820 に答える