如何修复/解决java.lang.reflect.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代码:

    Experimenting with Java applets    

I wish. :)

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

抛出InvocationTargetException 1是因为HTML正在调用(尝试加载) 不是 applet的东西。 将其更改为:

  

另外,正如Stephen C的回答中提到的那样。 将构造函数中的东西移动到init()方法中。

  1. InvocationTargetException是一个已检查的exception,它包装被调用的方法或构造函数抛出的exception

确保将Java控制台配置为针对applet和JWS应用程序显示。 如果默认级别没有输出,请将其抬起并重试。


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

我建议您阅读Oracle Applet开发教程 。 我不是applets的专家(轻描淡写!)但你似乎做了很多不同的事情,就像教程说的那样。 例如,你不使用main方法来启动applet,你应该在init方法而不是构造函数中进行设置(参见这里 )。