3

動作する実行可能.jar-File がありますが、別のプログラムで .jar-File にいくつかのファイルを追加したいと考えています。私の考えは、7zip コマンド ライン拡張機能を使用することでしたが、.jar-File. 私はこのコマンドを使用します:

7za.exe a -t7z C:\myfiles\thejar.jar C:\filestoadd\* -r

これを実行しようとするたびに、CMD はエラーをスローし、次のように言います。

Error: C:\myfiles\thejar.jar is not supported archive

まぁ、いいよ。それから私の考えは、ファイルを解凍し、ファイルが抽出されthejar.jarたディレクトリにファイルを追加し、拡張子を付けて作成することでした。これを行ったとき、ファイルは、ファイル追加する前よりも約 1MB 小さくなりました。さまざまな圧縮方法を試しましたが、常に小さくなりました。を実行しようとすると、エラー メッセージが表示されて. 私はすでに自分の問題をグーグルで調べましたが、今のところ答えがありません...助けてもらえますか?thejar.jar.zip.jarthejar.jar.jarInvalid or corrupt jarfile

4

3 に答える 3

5

単純な/推奨される解決策はjar、すべてのJava JDKに含まれているコマンドを使用して、JARに追加のファイルを追加することです。

以下を使用してJARファイルを作成することもできますJarOutputStream

7zipまたはその他の「標準」zipユーティリティを使用する際の問題は、Javaユーティリティが理解できない最新のzipファイル機能を誤って使用する可能性があることです。


また、(コメントで) Oracle JDK/JREから自分のプロジェクトjar.exeにコピーすることを許可されているかどうかを尋ねました。jli.dll

  • ライセンスを読んでください! 私たちはここでは弁護士ではなく、適切な法的アドバイスを提供することはできません。

  • 私の理解では、それはOracleのライセンスと著作権の違反になります。完全なJREを埋め込むことは許可されていますが、チェリーピッキングは許可されていません。

  • 代わりにOpenJDKの使用を検討してください。OpenJDKのライセンスはGPLベースであり、バニラディストリビューションの再配布に関する著作権ベースの制限はありません。ソースコードを利用可能にし、それに加えた変更の指示を作成する限り、それを変更したり再配布したりすることすらありません1


最後に、これはJava11以降では意味がないことに注意してください。Oracleは現在、完全なJDKのみを配布しています。つまり、顧客がOracleから「Java」をインストールすると、jarコマンドが含まれることになります。


1-商標についてのみ心配する必要があります。基本的に、商標ライセンスでは、許可されていない方法で製品が「標準」から逸脱している場合、製品を「Java」などと呼ぶことは許可されていません。自分で詳細を調べてください。

于 2012-10-14T12:25:57.727 に答える
2

-t7zzipではなく7zアーカイブを作成します。-tzip代わりに必要です。

于 2012-10-14T12:30:03.647 に答える