2016-11-10 7 views
0

私のAntビルドのjarターゲットである:java.lang.SecurityException:以下は無署名ファイル用manifiestセクション(RSA、SF、DSAファイルとMANIFEST.MFを除く)

<target name="build jar" depends="compile"> 

     <mkdir dir="${dist.home}" /> 

     <jar destfile="${dist.home}/${app.name}.jar" basedir="${build.home}/classes"> 
      <zipgroupfileset dir="${lib.home}" includes="*.jar" excludes="*.RSA, *.SF, *.DSA, META-INF/MANIFEST.MF" /> 

      <manifest> 
       <attribute name = "Main-Class" value = "com.karthik.publisher"/> 
      </manifest> 
     </jar> 

    </target> 

私は/実行するとjarファイルを実行しますあなたは私が各ジャーからRSA、SFとDSAファイルとMANIFEST.MFを除外しますが、私はまだこの例外を取得しています見ることができるように、コマンドプロンプトから、私は以下のエラーに

Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.SecurityException: no manifiest section for signature file entry javax/mail/SecuritySupport.class 
     at sun.security.util.SignatureFileVerifier.verifySection(Unknown Source) 
     at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source) 
     at sun.security.util.SignatureFileVerifier.process(Unknown Source) 

を取得します。
問題の原因とその解決方法を知っているかもしれません。

+0

生成されたJARファイルを解凍し、使用可能なファイルがMETA-INFディレクトリであることを確認します。 – Robert

+0

JARファイルを抽出した後、META-INFディレクトリに.RSA、.SF、MANIFEST.MF、mimetype.default、mailcap.defaultファイルがあります。これらのファイルはbuild/jarで除外されていないようです。私はビルドジャーのターゲットで何か間違っていると思う。 – Karthik

答えて

0

build jarタスクのexcludes定義は、jarファイルのルートにある.RSA .SFと.DSAファイルのみをカバーします。しかし、それらはMETA-INFサブディレクトリにあります。

  • *.RSA - >カバー - >が
  • META-INF/*.*をマージするのzip/jarファイルにどこにでもRSAファイルをカバー - >が
  • **/*.RSAをマージするのzip/jarファイルのルートにRSAファイルをカバーMETA-INFディレクトリ内のすべてのファイル

マージされたjarのMETA-INFディレクトリにファイルを置く理由が表示されないため、3番目の方法を使用することをお勧めします。

+0

3番目のオプションを試しましたが、META-INFフォルダにあるすべてのファイルが表示されます。 – Karthik

+0

'excludes'文字列のスペースを削除しましたか? – Robert

+0

スペースを削除しました。私は問題がzipgroupファイルセットで除外されていると思います。私は<ファイルセットDIR = "$ {lib.home}" 大文字と小文字が区別= "いいえ"> \t \t \t <除外名= "**/*。RSA" />にそれを変更した \t \t \t <名前を除外=」 **/*。SF **/*」/> \t \t \tは<=名前を除外する "DSA" /> \t \t \t <除外名= "META-INF /*.*" /> \t \t 。今私はセキュリティの例外を取得していないが、スレッド "main"の例外java.lang.NoClassDefFoundError:javax/jms/JMSException – Karthik