appletviewer调试applet程序提示NoClassDefFoundError错误 | ICHARM

首页 » 博文 » Code » 正文

appletviewer调试applet程序提示NoClassDefFoundError错误

哀差闷虽然学java也有一年了,但是上课老是玩手机,课后作业也没怎么做,所以java实践的经验基本为零,这不,写个小applet程序就困住了我。

本来是代码写好后直接用浏览器打开看效果,但由于哀差闷安装的JDK的版本太高,安全设置不能为中,导致浏览器无法执行本地的applet程序,没法,只好使用appletviewer工具来调试。
Square.java

package testdrawwindow;
import java.awt.Graphics;
import java.awt.Color;
import java.applet.*;

public class Square extends Applet{
    public void init(){}
    
   public void paint(Graphics g){
        int x[] ={120,280,280,120};
        int y[] ={400,400,560,560};
       g.setColor(Color.red);
       g.drawPolygon(x, y, 4);
    }
}

DrawShape.html

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
    <applet Code="Square.class" width="1000" height="1000"></applet>
    </body>
</html>

但还是出错了:

20151214225602

还好在网上找到了大神的解答:

首先要说的是这个错误的中文意思就是找不到这个Square类,后面提示wrong name ,可能是路径错误。

由于我的Square类是写在testdrawwindow包中,所以这个Square类的全名应该为testdrawwindow.Square.class

所以Applet标签里应该这样写:

<applet Code="testdrawwindow.Square.class" width="1000" height="1000"></applet>

而且DrawShape.html应该放在Square.class文件的上一层目录。

因为如果Square.class和DrawShape.html放在同一个文件夹下时,执行到applet标签的Code=“Square.class”时,就会去DrawShape.html所在目录找Square.class文件,并执行,问题是我的Square的第一句是package testdrawwindow; 所以系统会去找当前目录下的testdrawwindow包(testdrawwindow文件夹)里的Square类(Square.class),然而并不能找到,所以出错。

如果一定要把Square.class和DrawShape.html放在同一个文件夹下,那么把package去掉也行。

 

 

发表评论