クライアントのローカルフォルダに格納されているJarファイルを
Javaアプレットから呼び出して使用することは可能でしょうか?
クライアントにC:\Applet\lib\app-test.jarの様に、jarファイルが格納されているとして、
Javaアプレットからこのjarを使用しようするには、どのような設定が必要でしょうか?
現在は、NoClassDefFoundErrorになってしまいます。
eclipseで開発するときは、ビルドパスに上記パスを設定するので、問題なく動作します。
また、app-test.jarをC:\Program Files\Java\jre1.5.0_22\lib\extフォルダに格納すれば、
正常に動作します。
CLASSPATHを設定すれば良いのかと思い、C:\Applet\lib\app-test.jarを
クライアントの環境変数(CLASSPATH)に登録しましたが、同じエラーが発生します。
C:\Applet\lib\app-test.jarを利用するために必要設定(環境変数、HTMLのobjectタグ、
java.policyなど)があれば教えてください。
以上
No.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;
};
この回答への補足
サンプルの掲載ありがとうございます。
確かに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に指定するかどちらかですかね。
No.3
- 回答日時:
ANo.2の者ですが、アプレットの中でURLClassLoaderを使う方法でローカルのjarファイルからクラスを読み込むことができることは確認しました。
この回答への補足
回答ありがとうございます。
そういうやり方があるんですね。
明日、こちらの環境でも試して見たいと思います。
よろしければ、試して頂いたソースをサンプルとして掲載して
頂けると助かります。
No.2
- 回答日時:
> アプレットのクラスファイルはwebサーバーにあり、
> アプレットから利用するjarがクライアントのローカルフォルダにある
もしできるとすれば
・java.policyによってローカルファイルへのアクセスを許可する
・アプレットの中でURLClassLoaderを使い、app-test.jarから必要なクラスをロードする
という手順が考えられます。
実際に試してはいないので、この方法でもセキュリティによって阻まれるかもしれません。
No.1
- 回答日時:
この回答への補足
リンク先のどの部分でしょうか?
補足すると、アプレットのクラスファイルは
はwebサーバーにあり、アプレットから利用する
jarがクライアントのローカルフォルダにある
ということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java マイクラjavaでForgeを入れたいのですが、インストールした.jarファイルが展開されてしまい中 1 2023/07/28 22:30
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- アプリ jarを変換する方法 2 2022/06/04 14:26
- UNIX・Linux VScodeでjarファイルを開く方法 1 2022/06/03 17:00
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaでuseBeanエラーの解決方法
-
【Eclipse】パッケージ・エクス...
-
Eclipseでデバッグが出来ないエ...
-
EclipseでHTTP404エラーが出る。
-
Struts2のプログラムについて
-
Java初心者です。 コマンドプロ...
-
DOMParserを使いたいのですが
-
classファイルについて
-
Warファイルの解凍について質問...
-
CLASSファイルの暗号化
-
ディレクトリ内の名前を取得す...
-
jdbcドライバのjarファイルにク...
-
JAVAアプレットがブラウザで実...
-
Eclipse「リフレッシュ」と「ク...
-
C#のビルド方法について質問です。
-
FileWriterで8kb以上書き込むに...
-
javaFXをEclipseで動かしたい
-
javaクラスファイルをEclipseで...
-
java クラスファイルとソースコ...
-
html上で、バッチやexeファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
eclipse でclassesフォルダーが...
-
EclipseでHTTP404エラーが出る。
-
earファイルを展開する方法
-
【Eclipse】パッケージ・エクス...
-
JADで*.jarごとデコンパイルす...
-
プログラム実行の際に、「ソー...
-
jdbcドライバのjarファイルにク...
-
「削除するか、クラスパスの正...
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
コンパイルした後 java (class...
-
【Eclipse】逆コンパイルでエラ...
-
Javaアプリケーションのアイコ...
-
VisualStudioでC++クラスを追加...
-
「メイン・マニフェスト属性が...
おすすめ情報