おはよう御座います、非常に初歩的な内容だと思うのですが、アプレットについて質問させて頂きます。
現在、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ファイルが間違っているわけでは無いと思っていたのですが、ブラウザ上で起動する場合は何か付け加える物があるのでしょうか・・・、どなたか解る方が居ましたら、解答頂けると助かります。
No.2ベストアンサー
- 回答日時:
archiveにはディレクトリ名までではなくて後から入れたライブラリがjarファイルのファイル名まで書く必要があります。
また、ダブルクオートで囲い、ディレクトリの区切りにはスラッシュを使ったほうが安全だと思います。workspace\Practice_2DBox\binにHTMLファイルがあるなら相対パス表記で下記のようにすればいいでしょう。jarファイル名の部分は適切に書き換えてください。<applet code=Practice_1.HelloWorld.class archive="lib/jarファイル名.jar" width="200" height="200" >
No.1
- 回答日時:
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイクラでPythonのプログラミ...
-
配列にnullを代入すると、null...
-
自作Androidアプリのデータ引き...
-
正規表現について質問です。 カ...
-
プログラミングの問題です。大...
-
デバッグツールの具体例を教え...
-
ゲーム開発の入門書を探しています
-
jdbcでinsert,delete,createをe...
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゲーム開発の入門書を探しています
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
jdbcでinsert,delete,createをe...
-
プログラミングの問題です。大...
-
eclipseで作ったプログラムを他...
-
Eclipse 動的プロジェクトで404...
-
正規表現について質問です。 カ...
-
「main メソッドを持つクラスが...
-
jdk17.06のインストーラーが起...
-
自作Androidアプリのデータ引き...
-
JaneStyleのスレッドが見れなく...
-
プログラムの単体テストで金額...
-
is this even a thing?
-
CSV出力を画面から選択したデー...
-
次のhtml・cssでspan内の文字を...
-
デバッグツールの具体例を教え...
-
StringReaderのサンプルプログ...
-
一覧表示画面で正しくDBから取...
-
JSFタグのfタグとは
おすすめ情報