31

外部ソースからのjarファイルがあります。jar内のすべてのクラスはcom.xyzパッケージに含まれています。

すべてのクラスをcom.xyzoldパッケージに移動したいと思います。

これは、jarを解凍し、xzyフォルダーの名前をxyzoldに変更して再解凍するだけの簡単なものですか、それとも各クラスファイルも変更する必要がありますか?


これが私の解決策で、JarJarLinksを使用しています

java -jar jarjar-1.4.jar process rules.txt google-collections-1.0.jar google-collections-old-1.0.jar

そして、これが私のrules.txtファイルの内容です:

rule com.google.** com.googleold.@1
4

6 に答える 6

22

Jar Jar Linksを使用してそれを実現できます。また、変更したいクラスのソース コードは必要ありません。プログラムがバイトコード レベルで変更を行うためです (つまり、.class ファイルを直接変更します)。

于 2012-12-06T15:25:00.223 に答える
1

おそらく、 ProGuard難読化ツールを使用してこれを行うことができます。それは確かにパッケージ内のコードを移動でき、バイトコードレベルで動作します。その主な目的は難読化ですが、他のオプションの1つを最初に確認する必要があります。

于 2012-12-06T15:29:55.670 に答える
1

Jar Jar Linksをご覧ください。(私は名前について一切の責任を負いません:))。

その主な使用例は、独自の jar に外部 jar を埋め込むことです。そのために、既存のパッケージの名前を変更できます。必要なバイトコードを変更します。あなたがやりたいことをするためにそれを微調整することができるかもしれません。

于 2012-12-06T15:24:44.683 に答える
1

Maven ビルドでこれを行うには、 Maven shade プラグインを使用できます。

于 2012-12-06T15:25:56.663 に答える
-4

いいえ、jar ファイル内のすべてのクラスを変更する必要はありません。パッケージを変更するにはソースコードが必要です。

于 2012-12-06T15:21:33.080 に答える
-4

すべての Java ソース ファイルも変更する必要があります。パッケージ名だけでなく、インポートも、可能なインライン宣言も。本当に価値がありません。

于 2012-12-06T15:21:45.197 に答える