【问题标题】:Java Applet Embedded in HTML Causes InvocationTargetException嵌入在 HTML 中的 Java Applet 导致 InvocationTargetException
【发布时间】:2014-03-05 06:41:20
【问题描述】:

我有以下 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) 在 java.lang.Thread.run(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.pumpEventsForFilter(EventDispatchThread.java:211) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(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

这是什么原因造成的?

感谢您的帮助。

【问题讨论】:

    标签: java file applet invocationtargetexception


    【解决方案1】:

    我看到了你的错误:

    Caused by: java.lang.ClassCastException: MyClass cannot be cast to java.applet.Applet 
    

    可能是 JVM 插件没有正确加载你的类,我认为你必须使用 archive 参数而不是 URL 来指定小程序类的路径, 如果是 code 参数中的情况,您必须指定完整路径 mypackage.MyClass,并确保您的小程序主类扩展 javax.swing.JApplet 或 java.applet.Applet。

    另外我建议您使用 而不是 因为在 html4html5 规范中已弃用:

    希望对你有帮助,

    【讨论】:

    • 感谢您的回复! :) 我有两个问题。首先 javax.swing.JApplet 和 java.applet.Applet 有什么区别,我应该使用哪一个?其次,是否只有主类必须是 javax.swing.JApplet 或 java.applet.Applet 的扩展?还是所有的支持类?
    • 您好,只有主类必须是 javax.swing.JApplet 或 java.applet.Applet 的扩展。 JApplet 是 Applet 的扩展,它使您能够使用 Swing 组件。 JApplet 也是较新的课程。这是一个示例,您可以在其中找到如何使用 JApplet 定义小程序子类:docs.oracle.com/javase/tutorial/deployment/applet/subclass.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多