5

jar 内の .class ファイルをデフォルト パッケージから別の名前付きパッケージに移動して、インポートして使用できるようにすることはできますか?

ここで他の質問を参照した後、jarjar がまさに探しているものであると思いますが、どのように使用できるかわかりません。

私の質問は、jarjar を使用して .class ファイルをデフォルト パッケージから別の名前付きパッケージに再パッケージ化する方法です。

編集:何かを明確にしたい-再パッケージ化するjarのソースがないため、コードを再コンパイルする方法がわかりません。難読化と反射は問題外です。

EDIT2:jarjarを使用するのは非常に簡単に見えます:) java -jar jarjar.jar process rules.rules in.jar out.jar

rules.rules は次のようになります。

問題が解決しました!

4

2 に答える 2

1

パッケージを変更するには、再コンパイルしてから再コンパイルする必要があります。クラスファイルをjar内(または外部)に移動するだけでは役に立ちません。

于 2011-11-18T12:21:39.580 に答える
1

クラスを別のパッケージに移動するには、jar (またはファイルシステム) ディレクトリ構造内の場所を変更するだけでなくpackage、ソース ファイル内の宣言を変更してからクラスを再コンパイルする必要があります。

jar を再パッケージ化しようとする代わりに、Eclipse などの IDE で利用できる強力なリファクタリング ツールを検討する必要があります。これにより、この種の作業が簡単になります。しかし、あなたは(あなたの質問への更新で)ソースファイルを持っていないと言っているので、それは不可能です。

別の方法は、リフレクションを使用して、デフォルト パッケージで必要なものを呼び出すプロキシ クラスを作成することです。しかし、それは不快であるだけでなく、反省は問題外だとおっしゃっています。

だからやりたいことができない。

于 2011-11-18T12:22:44.573 に答える