5

変更できない jar ファイルがありますが、jar のメンバーの 1 つの代わりに別の .class ファイルを使用したいと考えています。jar 内のコードが外部の .class ファイルをロードしようとしたときに、Java に外部の .class ファイルを使用するように指示するにはどうすればよいですか?

4

2 に答える 2

2

まったく同じ名前の置換クラスを使用して別の jar ファイルをコンパイルし、それをクラス パス内の jar ファイルの前に置くことができます。たとえば、これはさまざまなslf4jブリッジ jar が、ライブラリ コード内の log4j または Jakarta Commons Logging への呼び出しを同種の slf4j コードに置き換えるために行うことです。そのように 2 セットのロギング システムと構成を維持する必要はありません。

クラスをオーバーライドする場合java...は、いくつかのコマンド ライン オプションを使用してブート クラス パスを変更できます。http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html-Xbootclasspathのオプションを見てください。警告に注意してください。

lib/endorsedSun が使用するサードパーティの jar をアップグレードする必要がある場合のディレクトリもあります。Oracle は、他の組織の XML および CORBA ライブラリを使用しています。彼らが新しいバージョンをリリースし、それを採用する必要がある場合は、それを採用できます。

AspectJ を使用してコードを計測し、場合によっては置き換えることができます。アドバイスは、around必要に応じて元のコードを呼び出すことができます。

元のコードを本当に置き換える必要があるかどうかを確認できます。一部のシステムは、カスタマイズ フックを提供します。

于 2013-09-20T00:54:14.800 に答える
0

外部の .class ファイルが最初にロードされていることを確認する必要があります。クラスがクラス・ローダーによってすでにロードされている場合、そのクラスは再ロードされません。アプリケーション サーバーを使用している場合は、クラス ローダーのクラスをロードするための設定を構成する方法があります。ただし、スタンドアロン アプリケーションを使用している場合は、必要な順序でファイルをロードするためにクラス ローダーを拡張する必要がある場合があります。

于 2013-09-20T00:48:50.560 に答える