我有一个关于一个特别恼人的错误的问题,我无法弄清楚,更不用说克服了。每当我尝试在我的网站上运行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网络教程,绝对新手也会很棒。 :)
答案 0 :(得分:4)
InvocationTargetException
1 ,因为HTML正在调用(尝试加载)不小程序的内容。将其更改为:
<p><applet code="MainApplet" width="800" width="600">
</applet></p>
另外,如answer of Stephen C中所述。将构造函数中的东西移动到init()
方法中。
- 醇>
InvocationTargetException
是一个已检查的异常,包装由调用的方法或构造函数抛出的异常。
确保将Java Console配置为针对applet&amp; JWS应用程序。如果默认级别没有输出,请将其抬起并重试。
我在这里:为什么编写applet?如果是由于规格。请教老师,请参阅Why CS teachers should stop teaching Java applets。
答案 1 :(得分:1)
我建议您阅读Oracle Applet Development Tutorial。我不是小程序专家(轻描淡写!)但你似乎做了很多不同的事情,教程如何表达。例如,您不使用main
方法来启动applet,您应该使用init
方法而不是构造函数进行设置(请参阅here)。