JApplet NoClassDefFoundError

时间:2012-11-23 06:47:42

标签: java applet noclassdeffounderror

我正在Eclipse上编写一个Japplet,从一个时刻到另一个,它停止在html页面上工作。

以下是错误:

  Exception in thread "thread applet-main.MapGenerator.class-1" java.lang.NoClassDefFoundError: com/google/gson/Gson
at main.Floor.parse(Floor.java:39)
at main.MapGenerator.loadParameters(MapGenerator.java:64)
at main.MapGenerator.start(MapGenerator.java:28)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1698)
at java.lang.Thread.run(Thread.java:662)

  Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:252)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:250)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:161)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 5 more

这里也是服务器请求:

  "GET /static/java/MapGenerator.jar HTTP/1.1" 200 68177
  "GET /static/java/com/google/gson/Gson.class HTTP/1.1" 404 1697

关键是它试图在服务器内找到Gson库而不是它的包......我不知道如何解决这个问题。

如果您需要什么,请自由询问。

修改

我在eclipse的项目中导入了Gson的库。实际上我不知道为什么applet试图从服务器加载它...在Eclipse上它运行没有任何问题。

修改

我已经在eclipse项目中复制了物理库...它仍然试图从服务器中获取它们......我不知道还有什么...

2 个答案:

答案 0 :(得分:0)

您没有在类路径中添加gson库,第二件事是您的请求(GET /static/java/com/google/gson/Gson.class HTTP/1.1)错误。

如果您在/static/java MapGenerator.jar下有gson jar,则可以像对MapGenerator.jar一样请求gson jar。但你不能要求从那个罐子里获得课程。

答案 1 :(得分:0)

显然没有人告诉我,我不能在另一个罐子里插入一个罐子,并希望一切都运作良好。

所以我将我的JAR库放在applet的同一个文件夹中,然后以这种方式加载applet:

    <applet name="mapGenerator"
            id="mapGenerator"  
            code="main.MapGenerator.class"
            archive="{{STATIC_URL}}java/MapGenerator.jar, 
                            {{STATIC_URL}}java/gson-2.2.2.jar,
                            {{STATIC_URL}}java/plugin.jar"
                     >
                    <param name=id value="{{building.id}}">
                    <param name=piani value='{{floors}}'>  
            MAYSCRIPT
    </applet>