Jar内のファイルを変更したいと思います。私のアプリケーション内から、抽出したり不快にしたりせずにこれを行うことは可能ですか?
変更するファイルは、ほとんどがXMLベースの構成ファイルです。
Jarファイルを解凍しないことに興味があるのは、.exeファイルを再度作成できない場合、jarファイルを解凍するとアプリケーションがlaunch4jでラップされるためです。
u
にはjar
オプションを使用できます
Javaチュートリアルから:
jar uf jar-file input-file(s)
「既に追加されているファイルと同じパス名を持つアーカイブ内のファイルはすべて上書きされます。」
JARファイルの更新 を参照してください。
再び全体の瓶を作るよりもはるかに良い。プログラム内からこれを呼び出すことも可能です。試す Javaでコマンドラインを実行する
Vimを使用できます:
vim my.jar
環境にunzip
がある場合、Vimは圧縮テキストファイルを編集できます。
Java jarファイルはZipファイルと同じ形式です。したがって、アーカイブを変更できるZipファイルユーティリティを使用している場合は、すぐに利用できます。 2番目の問題は、クラスまたは何かを再コンパイルする場合、おそらくjarを再構築する必要があるだけです。しかし、テキストファイルまたは何か(たとえば、xml)は簡単に十分に修正する必要があります。
多くの人が言っているように、JARのファイルを変更するには、JARを再スキャンする必要があります。 Launch4Jではさらに悪いことに、JARを変更したらEXEを再構築する必要があります。だからこのルートに行かないでください。
一般に、構成ファイルをJARに入れることはお勧めできません。これが私の提案です。あらかじめ決められた場所(ホームディレクトリ、\ Program Files \など)で構成ファイルを検索します。構成ファイルが見つかったら、それを使用します。それ以外の場合は、JARにあるものをフォールバックとして使用します。これを行う場合、構成ファイルを事前に決められた場所に書き込むだけで、プログラムがそれを取得します。
このアプローチのもう1つの利点は、ソフトウェアをアップグレードしても変更された構成ファイルが上書きされないことです。
これが役立つかどうかはわかりませんが、抽出せずに編集できます:
詳細についてはブログ投稿を確認してください http://vinurip.blogspot.com/2015/04/how-to-edit-contents-of-jar-file-on-mac.html
はい、できます。SQLiteを使用すると、jarファイル内からデータベースの読み取りまたは書き込みを行うことができます。そのため、抽出して再度jarする必要はありません。私の投稿 http://shoaibinamdar.in/blog /?p = 31
構文「jdbc:sqlite :: resource:」を使用すると、jarファイル内からデータベースを読み書きできます。
TrueZip をご覧ください。
これは、仮想ファイルシステムAPIを介して(jarファイル内のファイルをインラインで編集するために)必要なことを正確に行います。また、ネストされたアーカイブ(jar内のjar)もサポートします。
Dfaが言ったことを拡張する理由は、jarファイルがZipファイルのように設定されているためです。ファイルを変更する場合は、すべてのエントリを読み取り、変更するエントリを変更してから、エントリをjarファイルに書き戻す必要があります。私は以前にこれをしなければならなかった、そしてそれは私がそれをすることができる唯一の方法でした。
[〜#〜] edit [〜#〜]
これは、ファイルストリームであるJava jarファイルエディターの内部を使用していることに注意してください。それを行う方法があると確信しています。書き込み時にZipヘッダーのToCを定義する必要があると考えているため、7-Zipなどのユーティリティが実行していると考えています。
Exのjarファイルを抽出します。 winrarでCAVAJを使用:
Cavaj Java Decompilerは、Java CLASSファイルからのソースコードを再構築するグラフィカルなフリーウェアユーティリティです。
必要な場合のビデオチュートリアルは次のとおりです。 https://www.youtube.com/watch?v=ByLUeem768
Windowsでこれを行うことがわかった最も簡単な方法は、 WinRAR を使用することです。
このファイルが.classでない限り、つまりリソースファイルまたはマニフェストファイル-可能です。