自分のお店を開く時の心構えとは? >>

おはよう御座います、非常に初歩的な内容だと思うのですが、アプレットについて質問させて頂きます。

現在、Eclipseで作成したアプレットを、ブラウザ上で実行しようとしています。
ですが、Eclipseでアプレットを起動中に自動生成されるhtmlファイルをコピーしたhtmlファイルでも、アプレットを起動することが出来ないのです。

htmlファイルとclassファイルの内容さえ同じであれば、起動出来るのではと思っていたのですが・・・、何処がEclipseとChromeで違い、どう直せば良いのか解らず、質問させて頂きました。

HTMLファイルの内容は
<html>
<body>
<applet code=Practice_1/HelloWorld.class width="200" height="200" >
</applet>
</body>
</html>


エラーの内容は以下の通りです。

Java Plug-in 1.6.0_31
使用中の JRE のバージョン 1.6.0_31-b05 Java HotSpot(TM) Client VM
ユーザのホームディレクトリ = C:\Users\名前

java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/jbox2d/callbacks/ContactListener
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/jbox2d/callbacks/ContactListener
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.jbox2d.callbacks.ContactListener
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 20 more
例外: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/jbox2d/callbacks/ContactListener


実行しようとしているプログラムでは、Eclipseで言う所のプロジェクト内に、ImageとPractice_1というパッケージがあり、動作させたいクラスはPractice_1内に入っています、Eclipseでは当然何のエラーも無く実行出来ます。

見た限り、ContactListenerクラスが見つからない、というエラーのようなのですが、それ以外の後から入れたライブラリのクラスに関してはエラーが表示されていないので困惑しています。

Eclipseで自動生成された内容から一切変えていないので、htmlファイルが間違っているわけでは無いと思っていたのですが、ブラウザ上で起動する場合は何か付け加える物があるのでしょうか・・・、どなたか解る方が居ましたら、解答頂けると助かります。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

archiveにはディレクトリ名までではなくて後から入れたライブラリがjarファイルのファイル名まで書く必要があります。

また、ダブルクオートで囲い、ディレクトリの区切りにはスラッシュを使ったほうが安全だと思います。workspace\Practice_2DBox\binにHTMLファイルがあるなら相対パス表記で下記のようにすればいいでしょう。jarファイル名の部分は適切に書き換えてください。

<applet code=Practice_1.HelloWorld.class archive="lib/jarファイル名.jar" width="200" height="200" >
    • good
    • 0

Eclipseの中からAppletViewerを起動するときには、「後から入れたライブラリ」の在処をEclipseがAppletViewerに直接伝えてくれます。

その情報はHTMLファイルを経由しません。
しかし、ウェブブラウザでHTMLファイルを開いた場合は「後から入れたライブラリ」がどこにあるのかを知る方法がないので、エラーになります。

これを解決するには、HTMLのappletタグの中にarchive指定を追加してください。場所の指定方法は絶対パスでもHTMLファイルからの相対パスでも可です。

<applet code=Practice_1/HelloWorld.class archive="後から入れたライブラリの場所" width="200" height="200" >

この回答への補足

返信ありがとう御座います。

htmlがある階層にlibフォルダを作成し、そこにjarファイルを入れて試してみたのですが、解決しませんでした、変更したhtmlは以下の通りです

<html>
<body>
<applet code=Practice_1.HelloWorld.class archive=C:\Users\名前\Documents\解凍場所\pleiades-e3.7-ultimate-jre_20120225\workspace\Practice_2DBox\bin\lib width="200" height="200" >
</applet>
</body>
</html>

また、エラーの内容も多少増えてしまいました、増えた分はアーカイブを指定したこととは別の理由かもしれませんが、一応、Caused~と、例外~の部分だけ貼り付けておきます、エラー内容のat以下を全て入れると文字数制限で投稿できなくなるため、その部分は省きました。

Exception in thread "thread applet-Practice_1.HelloWorld.class-1" java.lang.NoClassDefFoundError: org/jbox2d/common/Vec2
Caused by: java.lang.ClassNotFoundException: org.jbox2d.common.Vec2
Caused by: java.lang.NoClassDefFoundError: org/jbox2d/callbacks/ContactListener
Caused by: java.lang.ClassNotFoundException: org.jbox2d.callbacks.ContactListener
例外: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/jbox2d/callbacks/ContactListener
例外: name.
例外: java.lang.IllegalArgumentException: name

補足日時:2012/05/27 14:28
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJavaアプレットの動作テスト(Eclipse)

Javaアプレットの動作テストは…
(1)HTMLファイルの作成
(2)java→classにコンパイル
(3)作成したHTMLファイルを開く

(1)~(3)のような手順で行われると思うのですが、
もっと簡単に動作テストする方法はありませんか?

それと、Eclipseでアプレットの動作テストってできますか?
(「メニュー」→「実行」ではできませんよね…?)

Aベストアンサー

Eclipseなら、メニュー→「実行」→「Javaアプレット」でできないかなあ?
Appletクラスを継承してればできそうな気がするけど。
あとはアプレットビューアを使う方法もあるけど。

Qeclipseでは動くのにブラウザでは動かないApplet

 現在eclipse 3.0.1を用いてSwing Appletの開発を研究で行っている者です。

 質問は、端的に言ってしまえば『eclipse以外で動かない』です。

 eclipseのデバッグや実行では動作するのですが、以下の方法では初期画面は正常に出てきますがネットワークにアクセスする機能が動きません。
・HTMLにappletタグを書き実行(ローカル)
・サーバーにアップして実行
・アプレットビューワーで実行

 原因として考えられるのはjava.net.HttpURLConnectionを用いてネットワークアクセスを行っている点なのですが、eclipse上で動いているので……
 また、jTextFieldにeclipseで実行している時はCtrl+Vで貼り付けが出来るのですが、それ以外では出来ないのも気になっています。
 
 HTMLはシンプルに、<applet code="WSNApplet.class" width=640 height=480></applet>だけです。
 
 eclipseが特殊で実行出来ているだけで、本来Appletでは動かないのか。それとも何かあるのか、教えてください。

 現在eclipse 3.0.1を用いてSwing Appletの開発を研究で行っている者です。

 質問は、端的に言ってしまえば『eclipse以外で動かない』です。

 eclipseのデバッグや実行では動作するのですが、以下の方法では初期画面は正常に出てきますがネットワークにアクセスする機能が動きません。
・HTMLにappletタグを書き実行(ローカル)
・サーバーにアップして実行
・アプレットビューワーで実行

 原因として考えられるのはjava.net.HttpURLConnectionを用いてネットワークアクセスを行っている点なので...続きを読む

Aベストアンサー

セキュリティにひっかかってるのかもしれませんね。
Appletに署名するか、とりあえずはjava.policyに

grant codeBase "http://xxx.xxx.xxx.xxx/-" {
permission java.security.AllPermission;
};

のように記述して試してみてはどうでしょう。

QEclipseから実行すると画像が読み込まれない

下記のコードをEclipseから実行すると画像が読み込まれないのですが、コマンドプロンプトから実行すると画像が読み込まれます。

コードが同じなのに不思議です…。

原因はどんなことが考えられるのでしょうか?

class test extends JFrame{
public static void main(String args[]){
test frame = new test("タイトル");
frame.setVisible(true);
}

test(String title){
setTitle(title);
setBounds(100, 100, 500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel p = new JPanel();

ImageIcon icon1 = new ImageIcon("img.jpg");
JLabel label1 = new JLabel(icon1);

p.add(label1);

Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.CENTER);
}
}

下記のコードをEclipseから実行すると画像が読み込まれないのですが、コマンドプロンプトから実行すると画像が読み込まれます。

コードが同じなのに不思議です…。

原因はどんなことが考えられるのでしょうか?

class test extends JFrame{
public static void main(String args[]){
test frame = new test("タイトル");
frame.setVisible(true);
}

test(String title){
setTitle(title);
setBounds(100, 100, 500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_C...続きを読む

Aベストアンサー

パスが違ってるんだと思いますよー。
Eclipseは、プロジェクトを実行すると、作業ディレクトリのパスをワークスペースに設定しますよー。だから、ワークスペースのフォルダの中にファイルがないと読めませんよー。

実行構成のメニューを選んで、Javaアプリケーションの実行構成で、「引数」タブの作業ディレクトリのところを、そのファイルがある場所(たぶん、プロジェクト?)に変更して実行すれば、ちゃんと読めるはずですよー。


人気Q&Aランキング

おすすめ情報