Applet麻烦 - NoClassDefFoundError

时间:2012-07-27 17:03:25

标签: java applet noclassdeffounderror

我意识到这些帖子中有一百万,但没有一个帮助过我,所以这里说:我正在尝试部署一个非常非常简单的applet,它无法正常加载。 我的HTML:

<html>
<head>
    <meta http-equiv="Content-Type" content"text/html; charset=utf-8">
</head>
<body>
   <applet code = "SimpleApplet.class"
   width = "320" height = "100"></applet>
</body>
</html>

我的Java:

package test;

import javax.swing.*;   

public class SimpleApplet extends JApplet{
   public void init(){
      try{
        SwingUtilities.invokeAndWait(new Runnable(){
          public void run(){
            JLabel lbl = new JLabel("Hello World");
            add(lbl);
          }
        });             
      }
      catch(Exception e){
        System.out.println(e);
      }
   }
}

两个文件都位于同一目录

/home/me/workspace/myProject/bin/test

如果我通过Eclipse自行运行applet,它运行正常。当我打开页面时,我收到错误

java.lang.NoClassDefFoundError: SimpleApplet (wrong name: test/SimpleApplet)

该错误表明我错误地放置或命名了某些内容。但是,尝试后

<applet code = "test/SimpleApplet.class"
width = "320" height = "100"></applet>

<applet code = "SimpleApplet.class"
codebase = "/test"
width = "320" height = "100"></applet>

以及其他尝试,包括删除“,尝试绝对和所有部分路径名称,并使用.java,它仍然不起作用,我最终得到一个ClassNotFoundException。Other answers点这个类路径和代码库(通常与归档有关)问题是发生这种情况的主要原因。但是,我没有使用jar文件,两个文件都在同一个目录中。有人知道为什么会这样吗?

3 个答案:

答案 0 :(得分:7)

  • /首页/我/工作区/ myProject的/ bin中
    • applet.html
    • /首页/我/工作区/ myProject的/斌/测试
      1. SimpleApplet.class

如果类SimpleApplet在包test中,则将HTML放在父目录中(如上所述),并使用此HTML。

<html>
<head>
    <meta http-equiv="Content-Type" content"text/html; charset=utf-8">
</head>
<body>
   <applet code = "test.SimpleApplet"
   width = "320" height = "100"></applet>
</body>
</html>

侧面提示:

  • 发布代码时,也会发布导入和包语句,或者换句话说,全部。因为我们需要猜测事物;但是使用完整的代码,我们不必这样做。
  • 此阶段不要尝试applet。您应该在命令行中使用包进行排序,并且applet比具有GUI的应用程序更难。

答案 1 :(得分:0)

判断
  

以及其他尝试,包括删除“,尝试绝对和所有部分路径名称,以及使用.java

您正在尝试使用test / SimpleApplet.java而不是test / SimpleApplet.class。您需要将SimpleApplet.java文件编译为SimpleApplet.class文件

确保在执行此操作时使用

<applet code = "SimpleApplet.class"
codebase = "/test"
width = "320" height = "100"></applet>

as / test是代码库,而不是包名。

答案 2 :(得分:0)

NoClassDefFoundError: Ahmed (wrong name: intoapplet/Ahmed )

我一直在寻找解决方案3天。

您的建议:

如果您已将类命名为“test”,则编码约定建议它应为“测试”。

这有助于我在我的Java类中不包括包声明。通过将名称的第一个字母保存为大写项目(使用eclipse)。

---------------------------------- Java代码:---------- ----------------------

    import java.awt.*;
    import javax.swing.*;

    public  class  Ahmed extends JApplet {

    private static final long serialVersionUID = 1L;

    public void paint(Graphics g){
    super.paint(g);
    g.drawString("my name is Ahmed Zaki wow this actually
    works",300,300);                     
    }
    }

---------------------------------- HTML code ----------- -----------------------

    <html>
    <head>
    <title>Tutorial applet</title>
    </head>
    <body>

    <Applet code="Ahmed.class"   width="400"; height="300";> 

    </Applet>
    </body>
    </html>

-------开源SFTP,FTP,WebDAV和SCP客户端上的目录-------

两者,课堂和html文件,在/ public_html /文件夹中使用“WinSCP”,它是Microsoft Windows的免费开源SFTP,FTP,WebDAV和SCP客户端。它的主要功能是在本地和远程计算机之间进行安全的文件传输。

    example:

    directory for html file = /public_html/index.html
    directory for class file = /public_html/Ahmed.class

    example no2:

    +-- public_html
    |   +-- index.html
    |   +-- Ahmed.class