JavaとMavenの質問です。

特定のサードパーティのライブラリ(JAR)にバグがあるため、
バグのあるクラスだけソースコードに手を入れました。
しかし作ったアプリをMavenで実行可能JARにすると、
どうもクラスロード時に探す順番が変わると見えて
修正したクラスではなく元のJARの中のクラスが使われてしまいます。
こういう場合、どうすればよいでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/06/06 15:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:t_shiono No.1

回答回数256ベストアンサー獲得回数22

ポイント60pt

確認した訳ではないですが、以下の方法があるかと思っています。

・サードパーティライブラリの再構築

・出力jarファイルのMANIFESTの書き換え

・Mavenの設定でクラスパスの順序を指定(できるかどうか不明)

後者2つについては、ロードされるのはどちらか一方であったとしても、実行時に同一クラスの実体がクラスパス中に2つ存在してしまうので、将来的なことも含めると何かと問題になりそうです。

サードパーティライブラリの再構築であれば、現在の開発中に1度だけjarファイルを再構築するだけですみ、シンプルだと思うのですが、いかがでしょうか?

jarを一度解凍し、対象クラスファイルのみを修正したものに置換し、再度jarファイルにし、それを利用するということです。

id:westfish

やはりそういう形になりますか…

その場合、サードパーティが配布しているものに手を加えて配布することになるので

ライセンス的にOKなのかどうか検討する必要が出てきて面倒に思ったのでした。

2007/06/02 12:47:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません