- ベストアンサー
JavaアプレットからローカルJarを利用する方法
- JavaアプレットからクライアントのローカルJarファイルを呼び出す方法について説明します
- クライアントのローカルフォルダに格納されているJarファイルをJavaアプレットから使用する方法を解説します
- jre1.5.0_22のlib/extフォルダにapp-test.jarを格納することで、Javaアプレットからjarファイルを正常に呼び出すことができます
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
テストに使ったコードはこんな感じです。 try { File jarFile = new File("/tmp/app-test.jar"); URL[] urls = new URL[] { jarFile.toURI().toURL() }; ClassLoader parent = ClassLoader.getSystemClassLoader(); URLClassLoader ucl = new URLClassLoader(urls, parent); Class cls = ucl.loadClass("Class1"); 後はリフレクションを使ってメソッドを呼ぶなり何なりお好きにどうぞ } catch (MalformedURLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Class1がapp-test.jar内の他のクラスを必要とする場合は、明示的にloadClass()を呼ばなくても自動的にロードされます。 java.policyは面倒だったので何でもアリにしました。 grant { permission java.security.AllPermission; };
その他の回答 (3)
- salsberry
- ベストアンサー率69% (495/711)
ANo.2の者ですが、アプレットの中でURLClassLoaderを使う方法でローカルのjarファイルからクラスを読み込むことができることは確認しました。
補足
回答ありがとうございます。 そういうやり方があるんですね。 明日、こちらの環境でも試して見たいと思います。 よろしければ、試して頂いたソースをサンプルとして掲載して 頂けると助かります。
- salsberry
- ベストアンサー率69% (495/711)
> アプレットのクラスファイルはwebサーバーにあり、 > アプレットから利用するjarがクライアントのローカルフォルダにある もしできるとすれば ・java.policyによってローカルファイルへのアクセスを許可する ・アプレットの中でURLClassLoaderを使い、app-test.jarから必要なクラスをロードする という手順が考えられます。 実際に試してはいないので、この方法でもセキュリティによって阻まれるかもしれません。
検索してから質問しよう。 大抵の枯れた技術はサンプルいっぱいある。 http://www.ne.jp/asahi/hishidama/home/tech/java/applet.html
補足
リンク先のどの部分でしょうか? 補足すると、アプレットのクラスファイルは はwebサーバーにあり、アプレットから利用する jarがクライアントのローカルフォルダにある ということです。
補足
サンプルの掲載ありがとうございます。 確かにURLClassLoaderを使用したやり方で、出来ました! 自分でも色々試した結果を報告すると、下記のようにOBJECTタグのarchiveに ローカルjarのファイルパスを指定すると、エラーが発生せずにクラスを 読み込むことが出来ました。 <OBJECT classid="clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA" width="0" height="0"> <PARAM name="code" value="Class1.class"> <PARAM name="codebase" value="./applet/"> <PARAM name="archive" value="file:///C:\Applet\lib\app-test.jar"> </OBJECT> 他にもやり方はあるのかもしれませんが、今のところ、 URLClassLoaderを使用するか、archiveに指定するかどちらかですかね。