2011-01-17 22 views
6

私はエラーを取得しています:障害の原因:jarsigner:antでjarファイルに署名するときに、 "jarsigner:{file}の名前を{file} .orgに変更しようとしましたが失敗しました"

[signjar] jarsigner: attempt to rename C:\workspace\line_editor\lib\icon.jar to C:\workspace\line_editor\lib\icon.jar.orig failed

自己しようとすると、Eclipseの内部アリと瓶のセットに署名。このプロジェクトではantビルドが正常に機能していて、他のプロジェクトでは同様のコードが使用されています。コードを少し変更して再構築し、このエラーが発生し続けるようにしました。ここで

は、関連するAntターゲットである:

<target name="sign" depends="jar" description="Signs Jars"> 

     <genkey keystore="myKeystore1" alias="something" storepass="somethingpass" 
      dname="CN=Classification, OU=NAPA, O=GPC, C=US"/> 


     <signjar keystore="myKeystore1" alias="something" storepass="somethingpass"> 
      <fileset file="${web.dir}/${jar.name}" /> 
      <fileset dir="${lib.dir}"> 
       <include name="*.jar"/> 
      </fileset> 
     </signjar> 
    </target> 

私はプロジェクトを削除し、私たちのリポジトリから再びそれをプルダウン。したがって、この部分は失敗しない他のプロジェクトと同じ既定のプロジェクト設定が適用されます。私は問題の.jarを見て、それは読み取り専用ではありませんでした。私は名前を変更し、次のアルファベットの.jarファイルも失敗しました。このフォルダ内の.jarsにアクセスしているプログラムは実行されていません。

何かの原因が考えられますか?

+0

質問をより具体的なエラーメッセージで更新しました。 – jzd

答えて

7

「lib」ディレクトリにあるjarは、ビルド中にクラスパス上にある可能性があります。 ${lib.dir}はビルドファイルで使用されているクラスパスに含まれていますか?

署名されたjarを格納する別のディレクトリを作成し、destdir属性を使用して 'signjar'タスクに指定することができます。

+0

はい私はビルドの上位クラスパスでも使用していました。私はあなたの提案を完全に使いました。なぜ私が過去に問題がなかったのか分かりません。 – jzd

+0

これは、Netbeans(8.1、はい、これは依然として問題です)が開いていて、そのjarがクラスパスに入っていたときにのみ発生していました。私はクラスパスからjarファイルを削除し、netbeansを再起動してjarsignerを実行しなければなりません(またはnetbeansを閉じて別のIDEから実行する)。 –

0

プロジェクト用に選択されたJREのホームディレクトリにあるjarsigner.exeを探します。 JREが単なるJRE(JDKではなく)の場合、このプログラムは存在しません。

プロジェクト固有のJREを設定し、実際にJDKであることを確認してください。

+0

選択したJREには、JDKがあります。他のプロジェクトは同じ動作をしても問題なく動作しますが、私はプロジェクト固有の設定を掘り下げて違いを見つけることができます。 – jzd

+0

より具体的なエラーメッセージが表示され、質問が更新されました。 jarsignerが.jarファイルの名前を変更する際に問題があるように見えます。 – jzd

2

私は同じ問題を抱えていました。自分でJARファイルの名前を変更してみてください。名前を変更できない場合は、通常、どのアプリケーションにファイルロックが設定されているかを把握できます。ほとんどの場合、javaのインスタンス。すべてのJavaベースのアプリケーションを終了し、もう一度やり直してください。 (タスクマネージャを使用してjava/javawが実行されていないことを確認してください。)その後、正常に動作するはずです。

関連する問題