2011-01-24 15 views
6

Eclipse IDEを使用してアプレットプログラムを作成しました。今イム作成は、以下のように.htmlファイル:エラー:java.lang.NoClassDefFoundError:Chase(間違った名前:pong/Chase)

<html> 
<APPLET CODE="Chase.class" width=500 height=400> 
</APPLET> 
</html> 

イムは、このファイルを実行すると取得エラーイムは、次のとおりです。EclipseのIDEで

java.lang.NoClassDefFoundError: Chase (wrong name: pong/Chase) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

は、新しいプロジェクトを作成し、「ピンポン」にプログラムをパッケージ化していますさフォルダ。

誰でもこのエラーが発生する理由を説明できますか?

編集:

明確にするため、少数Chase.javaコード行を追加します。簡単なアプレットです:

package pong; 


import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Random; 



public class Chase extends Applet implements Runnable 
{ ... } 
+0

http://stackoverflow.com/questions/3298988/java-lang-noclassdeffounderror-when-trying-to-embed-an-applet –

答えて

8

クラスパスにはクラス名Chaseはありません。

wrong nameパッケージ指定されたクラス名で間違いがある可能性があります。

あなたのクラスは例

package a; 
public class MyApplet extends Applet{} 

ためpackageを宣言している場合、次にHTMLにあなたのケースではa.MyApplet

更新

を与えることは

<APPLET CODE="pong.Chase.class" width=500 height=400>

01思えます

また、ディレクトリ構造は、パッケージ名がpong

+0

はヘルプを使用しようとしました。エラーはまだあります:oad:class pong/Chase.classが見つかりません。 にjava.lang.ClassNotFoundException:pong.Chase.class はjava.lang.ClassLoaderで \t sun.plugin2.applet.Applet2ClassLoader.findClass(不明なソース)java.lang.ClassLoader.loadClassで \t(不明なソース)で\t .loadClass(不明なソース) \t sun.plugin2.applet.Plugin2ClassLoader.loadCode(不明なソース).... etc – GamDroid

+0

check update .................... ..... –

+0

はいパッケージ名は "pong"であり、上記の手順を実行した後は、独立して実行されます。しかし、カスタムHTMLコードをWebサイトのカスタムWebページに追加する必要がある場合、エラーは上記と同じです。 – GamDroid

0

あなたのアプレットタグでパッケージ部分を忘れてしまっている場合

- - - - - 
     | 
     |-your html file 
     |-pong folder 
      | 
      |- Chases.class 

を行いますする必要があります:

<APPLET CODE="pong.Chase.class" width=500 height=400> 
</APPLET> 
2

私はこの問題は、基本的であることを考えます@ Jigar Joshiは指摘しているが、わずかなシワがある。私はFQNが "pong.Chase"であるクラスを持っていると思いますが、 "Chase.class"を含むディレクトリがクラスパス上にあるようにクラスパスを設定しています。次に、クラスを "Chase.class"として探すようにアプレットローダーに指示しました。

クラスローダーがバイトコードファイルを見つけましたが、ロードしようとしたときにクラスFQNが "Chase"ではなく "pong.Chase"であることがわかりました...あなたが指定した名前。 Ergo ... a NoClassDefFoundErrorというメッセージが表示され、クラス名が正しくないことがわかります

修正は「ピンポン」ディレクトリの親ディレクトリがクラスパス上にあることを確認し、使用することです。また

<APPLET CODE="pong.Chase.class" width=500 height=400></APPLET> 

からcodeBase属性を使用します。

または、2 - Javaクラスのpackage宣言を削除します。

または、3 - <object>要素を使用します。 <applet>要素は推奨されていません。

参考:http://www.w3.org/TR/html401/struct/objects.html

+0

代替2は間違いなく動作します。私はこのアプレットのコードスニペットをWebページに追加する必要があります。追加すると、以前と同じエラーになります。しかし、htmlファイルを単独で実行すると動作します。それはなぜそうですか? – GamDroid

+0

@GamDroid - それはディレクトリ構造だと思われます。 @ Jigar Joshiの更新された答えを見てください。 –

関連する問題