- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Jarファイル内のクラスパスについて)
Jarファイル内のクラスパスについて
このQ&Aのポイント
- Jarファイル内のクラスパスについて
- Jarファイル内のクラスパスについて説明します。Jarファイルをダブルクリックするだけで動作するプログラムを作成している際に、Exception in thread 'main' java.lang.NoClassDefFoundErrorが発生する問題が発生しました。
- Jarファイル内のクラスパスについて説明します。Jarファイルをダブルクリックするだけで動作するプログラムを作成しており、他の人が作ったJarファイル(ライブラリ)を使用するために、JarにJarを取り込んでいます。しかし、子プロセスがライブラリを呼び出す際にNoClassDefFoundErrorが発生してしまいます。どのようにすれば子プロセスがJar内のJarを参照できるようになるでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
子プロセスを起動するときにクラスパスはどうやって指定していますか? 普通のやり方ではjarの中にあるjarをクラスパスに足すことはできないように思います。 jarを1つにしたいのなら、ライブラリのjarの内容(classファイルや他のリソースファイル)を一度展開して、質問者さんの作ったclassと一緒に実行可能jarとしてパッケージし直すのが最も簡単だと思います。 ライブラリのjarファイルをL.jar、その中にあるファイルをL1.class, L2.class、質問者さんの作ったファイルをA1.class, A2.classとします。現状はA1.class, A2.class, L.jarの入ったjarを作っているのですよね。その代わりに、A1.class, A2.class, L1.class, L2.classの入ったjarを作るということです。 どうしてもjar内jarのままでやりたい場合は、jar内jarのクラスを扱えるように拡張したClassLoaderを作るのかな。そんなことが実際に可能かどうかは確かめていません。
お礼
回答ありがとうございます。 ClassLoaderをカスタムするやり方はよくわからないので、 展開したライブラリのクラスファイルをJarに追加するやり方を試したいと思います。