HTML中嵌入的Java小程序导致InvocationTargetException

HTML中嵌入的Java小程序导致InvocationTargetException,java,file,applet,invocationtargetexception,Java,File,Applet,Invocationtargetexception,我有以下HTML用于嵌入Java小程序: <applet code="MyClass" URL="path/MyClass.class" height="200" width="400"></applet> 小程序不工作,控制台中出现以下错误: java.lang.reflect.InvocationTargetException 在com.sun.deploy.util.DeployAWTUtil.invokeAndWait上(DeployAWTUtil.java

我有以下HTML用于嵌入Java小程序:

<applet code="MyClass" URL="path/MyClass.class" height="200" width="400"></applet>

小程序不工作,控制台中出现以下错误:

java.lang.reflect.InvocationTargetException 在com.sun.deploy.util.DeployAWTUtil.invokeAndWait上(DeployAWTUtil.java:116) 位于sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3606) 位于sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3131) 位于sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1517) 运行(Thread.java:680) 原因:java.lang.ClassCastException:MyClass无法强制转换为java.applet.applet 位于sun.plugin2.applet.Plugin2Manager$13.run(Plugin2Manager.java:3119) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715) 在java.awt.EventQueue.access$400(EventQueue.java:82) 在java.awt.EventQueue$2.run(EventQueue.java:676) 在java.awt.EventQueue$2.run(EventQueue.java:674) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97) 在java.awt.EventQueue$3.run处(EventQueue.java:690) 在java.awt.EventQueue$3.run(EventQueue.java:688) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:687) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:211) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:201) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122) 异常:java.lang.reflect.InvocationTargetException

这是什么原因造成的


感谢您的帮助。

查看您的错误,我发现:

Caused by: java.lang.ClassCastException: MyClass cannot be cast to java.applet.Applet 
可能JVM插件没有正确加载您的类,我认为您必须使用archive参数而不是URL来指定小程序类的路径,如果在code参数中出现这种情况,则必须指定完整的路径mypackage.MyClass,并确保applet主类扩展了javax.swing.JApplet或java.applet.applet

另外,我建议您使用而不是,因为在和规范中不推荐使用:


希望这有帮助,

谢谢您的回复!:)我有两个问题。首先,javax.swing.JApplet和java.applet.applet之间有什么区别,我应该使用哪一个?其次,主类是否必须是javax.swing.JApplet或java.applet.applet的扩展?还是所有的支持类?嗨,只有主类必须是javax.swing.JApplet或java.applet.applet的扩展。JApplet是Applet的扩展,它使您能够使用Swing组件。JApplet也是一门较新的课程。下面是一个示例,您可以找到如何使用JApplet定义applet子类: