3

我有一个关于一个特别烦人的错误的问题,我无法弄清楚,更不用说克服了。每当我尝试在我的网站上运行 Java 小程序(Applet 或 JApplet)时,都会弹出此错误:

 java.lang.reflect.InvocationTargetException

没有堆栈跟踪,没有行号,只有错误消息。因此,我在 Google 上四处寻找其他人的解决方法(或理想情况下的实际修复),但找不到太多。我已经尝试了我的代码的几种变体(有时使用 JAR 文件,有时没有,有时单个类,有时没有,有时在使用匹配目录结构的包中,有时没有包等)但似乎无法摆脱这个讨厌的小虫子。:)

对于一个具体的例子,这是我最近的尝试;首先是Java代码:

package cmtoolbox;

public class CMToolbox {
    public static void main(String[] args) {
        MainApplet a = new MainApplet();
    }
}

它设置的类:

package cmtoolbox;

import javax.swing.JApplet;
import javax.swing.JButton;

public class MainApplet extends JApplet {
    public MainApplet() {
        JApplet main = new JApplet();
        main.setSize(800,600);
        JButton test1 = new JButton();
        test1.setText("Test");
        main.add(test1);
    }
}

我的 HTML 代码:

<html>
<head>
  <title> Experimenting with Java applets </title>
</head>
<body>
  <p><applet code="CMToolbox.class" width="800" width="600">
    I wish. :)
  </applet></p>
</body>
</html>

我想这可能是因为网络本身可以有这么多的变量(操作系统、浏览器类型等),有一些内部/系统级别的东西导致了这种情况……但我确实在我的计算机上安装了 JRE 和 JDK,所以我真的不明白为什么......无论如何,我确定我不是第一个遇到这个障碍的人,但这让我很难过,所以我很感激任何关于这个主题的信息。此外,如果您知道任何针对绝对菜鸟的优秀 Java Web 教程,那也很棒。:)

4

2 回答 2

4

InvocationTargetException1被抛出,因为 HTML 正在调用(试图加载)不是小程序的东西。将其更改为:

  <p><applet code="MainApplet" width="800" width="600">
  </applet></p>

此外,正如Stephen C 的回答中所述。将构造函数中的内容移到init()方法中。

  1. InvocationTargetException是一个检查的异常,它包装了由调用的方法或构造函数抛出的异常。

确保Java 控制台配置为显示小程序和 JWS 应用程序。如果默认级别没有输出,请提高它并重试。


当我在这里时:为什么要编写小程序?如果是由于规范。老师,请参考为什么 CS 老师应该停止教授 Java 小程序

于 2013-08-17T06:42:42.820 回答
1

我建议您阅读 Oracle Applet 开发教程。我不是小程序方面的专家(轻描淡写!),但您似乎做了很多与教程所说的不同的事情。例如,您不使用main方法来启动小程序,并且您应该在init方法而不是构造函数中进行设置(参见此处)。

于 2013-08-17T06:11:17.117 回答