【问题标题】:Applet trouble - NoClassDefFoundError小程序问题 - NoClassDefFoundError
【发布时间】:2012-07-27 17:03:25
【问题描述】:

我意识到有上百万篇这样的帖子,但没有一个对我有帮助,所以这里是:我正在尝试部署一个无法正确加载的非常非常简单的小程序。 我的 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 自己运行小程序,它可以正常工作。当我打开页面时,我得到了错误

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。Otheranswers 指出类路径和代码库(通常与存档有关)问题是发生这种情况的主要原因。但是,我没有使用 jar 文件,并且两个文件都在同一个目录中。有人知道为什么会这样吗?

【问题讨论】:

  • 这似乎是说你有一个名为“SimpleApplet”的.class 文件,它在内部说它的名字是“test/SimpleApplet”。即,您已将其声明在“test”包中,但尚未将其定位在 jar 或 class 目录内的“test”目录中。例如,您可能在类路径中指定了“mystuff/mydir/test”,而您应该只说“mystuff/mydir”。

标签: java applet noclassdeffounderror


【解决方案1】:
  • /home/me/workspace/myProject/bin
    • applet.html
    • /home/me/workspace/myProject/bin/test
      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>

小贴士:

  • 发布代码时,同时发布 import 和 package 声明,或者换句话说,全部发布。事实上,我们需要对事物进行猜测;但有了完整的代码,我们就不必这样做了。
  • 在这个阶段不要尝试小程序。您应该在命令行上处理软件包,而小程序比使用 GUI 的应用程序更难。

【讨论】:

    【解决方案2】:

    来看

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

    您正在尝试获取 test/SimpleApplet.java 而不是 test/SimpleApplet.class。您需要将 SimpleApplet.java 文件编译成 SimpleApplet.class 文件

    确保当你这样做时,你使用

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

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

    【讨论】:

      【解决方案3】:

      NoClassDefFoundError: Ahmed (wrong name: intoapplet/Ahmed )

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

      您的建议:

      如果您将类命名为“test”,编码约定建议它应该是“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 代码---------- ----------------------

          <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”,这是一个免费的开源 SFTP、FTP、WebDAV 和 SCP 客户端,适用于 Microsoft Windows。它的主要功能是本地和远程计算机之间的安全文件传输。

          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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多