web-dev-qa-db-ja.com

jar内のファイルの変更

Jar内のファイルを変更したいと思います。私のアプリケーション内から、抽出したり不快にしたりせずにこれを行うことは可能ですか?

変更するファイルは、ほとんどがXMLベースの構成ファイルです。

Jarファイルを解凍しないことに興味があるのは、.exeファイルを再度作成できない場合、jarファイルを解凍するとアプリケーションがlaunch4jでラップされるためです。

77
Hamza Yerlikaya

uにはjarオプションを使用できます

Javaチュートリアルから:

jar uf jar-file input-file(s)

「既に追加されているファイルと同じパス名を持つアーカイブ内のファイルはすべて上書きされます。」

JARファイルの更新 を参照してください。

再び全体の瓶を作るよりもはるかに良い。プログラム内からこれを呼び出すことも可能です。試す Javaでコマンドラインを実行する

75
clwhisk

Vimを使用できます:

vim my.jar

環境にunzipがある場合、Vimは圧縮テキストファイルを編集できます。

21
Jose Alban

Java jarファイルはZipファイルと同じ形式です。したがって、アーカイブを変更できるZipファイルユーティリティを使用している場合は、すぐに利用できます。 2番目の問題は、クラスまたは何かを再コンパイルする場合、おそらくjarを再構築する必要があるだけです。しかし、テキストファイルまたは何か(たとえば、xml)は簡単に十分に修正する必要があります。

9
JustJeff

多くの人が言っているように、JARのファイルを変更するには、JARを再スキャンする必要があります。 Launch4Jではさらに悪いことに、JARを変更したらEXEを再構築する必要があります。だからこのルートに行かないでください。

一般に、構成ファイルをJARに入れることはお勧めできません。これが私の提案です。あらかじめ決められた場所(ホームディレクトリ、\ Program Files \など)で構成ファイルを検索します。構成ファイルが見つかったら、それを使用します。それ以外の場合は、JARにあるものをフォールバックとして使用します。これを行う場合、構成ファイルを事前に決められた場所に書き込むだけで、プログラムがそれを取得します。

このアプローチのもう1つの利点は、ソフトウェアをアップグレードしても変更された構成ファイルが上書きされないことです。

8
ZZ Coder

これが役立つかどうかはわかりませんが、抽出せずに編集できます:

  1. Viエディターからjarファイルを開きます
  2. リストから編集するファイルを選択します
  3. Enterキーを押してファイルを開き、チェンジャーを実行して、非常に簡単に保存します

詳細についてはブログ投稿を確認してください http://vinurip.blogspot.com/2015/04/how-to-edit-contents-of-jar-file-on-mac.html

2
Buvin Perera

これは、短期的に対処しようとするよりも多くの作業になる可能性がありますが、長期的には Ant (または Maven 、または Bazel )jarを手動でビルドする代わりに。そうすれば、Antファイル(Eclipseを使用している場合)をクリックして、jarを再構築できます。

あるいは、実際にはこれらの設定ファイルをjarにまったく入れたくない場合があります-これらのファイルを定期的に交換する必要がある場合、または複数の関係者に配布することになっている場合は、設定ファイルをjarで。

2
dimo414

はい、できます。SQLiteを使用すると、jarファイル内からデータベースの読み取りまたは書き込みを行うことができます。そのため、抽出して再度jarする必要はありません。私の投稿 http://shoaibinamdar.in/blog /?p = 31

構文「jdbc:sqlite :: resource:」を使用すると、jarファイル内からデータベースを読み書きできます。

1
shoaib

TrueZip をご覧ください。

これは、仮想ファイルシステムAPIを介して(jarファイル内のファイルをインラインで編集するために)必要なことを正確に行います。また、ネストされたアーカイブ(jar内のjar)もサポートします。

1
GreenGiant

Dfaが言ったことを拡張する理由は、jarファイルがZipファイルのように設定されているためです。ファイルを変更する場合は、すべてのエントリを読み取り、変更するエントリを変更してから、エントリをjarファイルに書き戻す必要があります。私は以前にこれをしなければならなかった、そしてそれは私がそれをすることができる唯一の方法でした。

[〜#〜] edit [〜#〜]

これは、ファイルストリームであるJava jarファイルエディターの内部を使用していることに注意してください。それを行う方法があると確信しています。書き込み時にZipヘッダーのToCを定義する必要があると考えているため、7-Zipなどのユーティリティが実行していると考えています。

1
aperkins

Exのjarファイルを抽出します。 winrarでCAVAJを使用:

Cavaj Java Decompilerは、Java CLASSファイルからのソースコードを再構築するグラフィカルなフリーウェアユーティリティです。

必要な場合のビデオチュートリアルは次のとおりです。 https://www.youtube.com/watch?v=ByLUeem768

1

Windowsでこれを行うことがわかった最も簡単な方法は、 WinRAR を使用することです。

  1. ファイルを右クリックして、コンテキストメニューから[WinRARで開く]を選択します。
  2. 編集するファイルに移動し、ダブルクリックしてデフォルトのエディターで開きます。
  3. 変更を行った後、エディターを保存して終了します。
  4. アーカイブ内のファイルを更新するかどうかを尋ねるダイアログが表示されます。「はい」を選択すると、JARが更新されます。
0
Steve Chambers

このファイルが.classでない限り、つまりリソー​​スファイルまたはマニフェストファイル-可能です。

0
Sorantis