如何修复/解决java.lang.reflect.InvocationTargetException

时间:2013-08-17 05:01:08

标签: java web applet invocationtargetexception

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

 java.lang.reflect.InvocationTargetException

没有堆栈跟踪,没有行号,只是错误消息。所以我用谷歌搜索其他任何人的解决方法(或理想的实际修复)但却找不到多少。我已经尝试了我的代码的几种变体(有时候有一个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网络教程,绝对新手也会很棒。 :)

2 个答案:

答案 0 :(得分:4)

抛出

InvocationTargetException 1 ,因为HTML正在调用(尝试加载)小程序的内容。将其更改为:

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

另外,如answer of Stephen C中所述。将构造函数中的东西移动到init()方法中。

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

确保将Java Console配置为针对applet&amp; JWS应用程序。如果默认级别没有输出,请将其抬起并重试。


我在这里:为什么编写applet?如果是由于规格。请教老师,请参阅Why CS teachers should stop teaching Java applets

答案 1 :(得分:1)

我建议您阅读Oracle Applet Development Tutorial。我不是小程序专家(轻描淡写!)但你似乎做了很多不同的事情,教程如何表达。例如,您不使用main方法来启动applet,您应该使用init方法而不是构造函数进行设置(请参阅here)。