简体   繁体   English

HTML中嵌入的Java Applet导致InvocationTargetException

[英]Java Applet Embedded in HTML Causes InvocationTargetException

I have the following HTML for embedding my Java applet: 我具有以下用于嵌入Java小程序的HTML:

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

The applet does not work and I am getting the following error in the console: 小程序不起作用,并且在控制台中出现以下错误:

java.lang.reflect.InvocationTargetException at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116) at sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3606) at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3131) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1517) at java.lang.Thread.run(Thread.java:680) Caused by: java.lang.ClassCastException: MyClass cannot be cast to java.applet.Applet at sun.plugin2.applet.Plugin2Manager$13.run(Plugin2Manager.java:3119) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715) at java.awt.EventQueue.access$400(EventQueue.java:82) at java.awt.EventQueue$2.run(EventQueue.java:676) at java.awt.EventQueue$2.run(EventQueue.java:674) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at j java.lang.reflect.InvocationTargetException(位于com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116)位于sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3606)位于sun.plugin2.applet在sun.plugin2.applet.Plugin2Manager $ AppletExecutionRunnable.run(Plugin2Manager.java:1517)处的Plugin2Manager.createApplet(Plugin2Manager.java:3131)在java.lang.Thread.run(Thread.java:680)造成原因:java.lang .ClassCastException:MyClass无法在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)处强制转换为java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)处的sun.plugin2.applet.Plugin2Manager $ 13.run(Plugin2Manager.java:3119)上的java.applet.Applet .awt.EventQueue.dispatchEventImpl(EventQueue.java:715)at java.awt.EventQueue.access $ 400(EventQueue.java:82)at java.awt.EventQueue $ 2.run(java.awt。 j处的java.security.AccessController.doPrivileged(本机方法)的EventQueue $ 2.run(EventQueue.java:674)j处的java.security.AccessControlContext $ 1.doIntersectionPrivilege(AccessControlContext.java:86) ava.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97) at java.awt.EventQueue$3.run(EventQueue.java:690) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.awt.EventQueue.dispatchEvent(EventQueue.java:687) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception: java.lang.reflect.InvocationTargetException ava.security.AccessControlContext $ 1.doIntersectionPrivilege(AccessControlContext.java:97)在java.awt.EventQueue $ 3.run(EventQueue.java:690)在java.awt.EventQueue $ 3.run(EventQueue.java:688)在java。 java.security.AccessControlContext $ 1.doIntersectionPrivilege(AccessControlContext.java:86)处的security.AccessController.doPrivileged(本机方法)java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchatchThreads)中的java.awt.EventQueue.dispatchEvent(EventQueue.java:687) .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.run(EventDispatchThread.java:188)在java.awt.EventDispatchThread.run(EventDispatchThread.java:122)异常:java.lang.reflect.InvocationTargetException

What is causing this? 是什么原因造成的?

Thank you for your help. 谢谢您的帮助。

Looking your error I see: 看你的错误,我看到:

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

Probably the JVM plugin is not loading your class correctly, I think that you have to use archive parameter instead of URL in order to specify the path to your applet classes, if is the case in code parameter you must specify the complete path mypackage.MyClass, and be sure that your applet main class extends javax.swing.JApplet or java.applet.Applet. 可能是JVM插件未正确加载您的类,我认为必须使用archive参数而不是URL才能指定applet类的路径,如果在代码参数中是这种情况,则必须指定完整路径mypackage.MyClass ,并确保您的applet主类扩展了javax.swing.JApplet或java.applet.Applet。

Also I recommend you to use < Object> and < embed> instead of < applet> because is deprecated in html4 and html5 specification: 另外,我建议您使用<Object>和<embed>而不是<applet>,因为在html4html5规范中已弃用:

Hope this helps, 希望这可以帮助,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM