2009-06-03 10 views
1

実行時にjarファイルをロードする際に問題があります。 私hotel.jarがロードされ、その方法(makeReservation)は、次のコードを使用して呼び出されます:問題は私のjarファイルのクラスHotelPackage.HotelMgtである別のjarファイルに依存するjarファイルをロードする際の問題

File file = new File("c:/ComponentFiles/hotel.jar"); 
URL jarfile = new URL("jar", "", "file:" + file.getAbsolutePath() + "!/"); 
URLClassLoader cl = URLClassLoader.newInstance(new URL[]{jarfile}); 
Class componentClass = cl.loadClass("HotelPackage.HotelMgt"); 
Object componentObject = componentClass.newInstance(); 
Method setMethod = componentClass.getDeclaredMethod("makeReservation", null); 
setMethod.invoke(componentObject, null); 

が、私は別のクラス変数を持っているがクラス(HotelPackage.Hotel)は別のjarファイルにあります。 私が開いて、上記と同じコードを持つ他のjarファイルをロードしようとしたが、私は「メイン」java.lang.NoClassDefFoundErrorのクラスDEF:スレッドで 例外を見つけることができません例外受け取る:BeanPackage /ホテル

解決策は何ですか?

答えて

1

おかげで、私は実際に動作する別の解決策を見つけた:

詳しい情報はこちらです。お互いに動作するコンポーネントシリーズ全体を知っているので、クラスローダーインスタンス(URLの配列)を1つずつロードします。クラスローダ自体が依存関係を管理します。

+0

この場合、おそらく、すべてのjarをマスターjarに入れたいと思うかもしれません - このプロジェクトはあなたにとって面白いかもしれません:http://one-jar.sourceforge.net/ – FunThomas424242

関連する問題