在小程序java.lang.reflect.invocationtargetexception错误

编程入门 行业动态 更新时间:2024-10-24 17:30:52
本文介绍了在小程序java.lang.reflect.invocationtargetexception错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我的应用程序运行没有错误作为一个应用程序,但作为一个小程序引发以下错误:

My application runs without errors as an application, but as an applet throws the following error:

java.lang.reflect.invocationtargetexception

java.lang.reflect.invocationtargetexception

这是我第一次尝试使用我的应用程序作为一个applet,所以我可能做错了,但这里是我的主类:

This is my first time attempting to use my application as an applet, so I may have done something wrong, but here is my main class:

package main; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JApplet; import javax.swing.JFrame; public class MainGame extends JApplet { private static final long serialVersionUID = 1L; public static final String NAME = "Physics - Projectile Motion Example"; public static final int HEIGHT = 160; public static final int WIDTH = HEIGHT * 16 / 9; public static final int SCALE = 4; private long reportedFramerate; long framerate = 1000 / 60; // time the frame began long frameStart; // number of frames counted this second long frameCount = 0; // time elapsed during one frame long elapsedTime; // accumulates elapsed time over multiple frames long totalElapsedTime = 0; // the actual calculated framerate reported public MainGame() { run(); } public void run() { JFrame frame = new JFrame(MainGame.NAME); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); OptionsPanel options = new OptionsPanel(); GamePanel game = new GamePanel(options); frame.setSize(new Dimension ( WIDTH * SCALE, HEIGHT * SCALE )); frame.add(game, BorderLayout.CENTER); frame.add(options, BorderLayout.SOUTH); frame.setLocationRelativeTo(null); frame.setResizable(false); frame.setVisible(true); while(true) { frameStart = System.currentTimeMillis(); if(options.isStartGame() == true) { game.run(); } else { game.reset(); } // calculate the time it took to render the frame elapsedTime = System.currentTimeMillis() - frameStart; // sync the framerate try { // make sure framerate milliseconds have passed this frame if (elapsedTime < framerate) { Thread.sleep(framerate - elapsedTime); } else { // don't starve the garbage collector Thread.sleep(5); } } catch (InterruptedException e) { break; } ++frameCount; totalElapsedTime += (System.currentTimeMillis() - frameStart); if (totalElapsedTime > 1000) { reportedFramerate = (long) ((double) frameCount / (double) totalElapsedTime * 1000.0); // show the framerate in the applet status window //System.out.println("fps: " + reportedFramerate); // repaint(); frameCount = 0; totalElapsedTime = 0; //System.out.println(reportedFramerate); } } } public void init() { new MainGame(); } public void start() { System.out.println("started"); } public void stop() { System.out.println("Stopped"); } public void destroy() { } public static void main(String[] args) { new MainGame(); } }

HTML的对象:

HTML for the object:

<p> <object type="application/x-java-applet" name="physics" width="360" height="320"> <param name="code" value="main.MainGame.class" /> <param name="archive" value="physics.jar" /> <param name="scriptable" value="true" /> <param name="mayscript" value="true" /> <param name="file" value="/report_files/1-1272041330710YAIwK" /> </object> </p>

例页看到自己的错误: fogest/java_example/

推荐答案

完整的堆栈跟踪是:

Java Plug-in 10.21.2.11 Using JRE version 1.7.0_21-b11 Java HotSpot(TM) Client VM User home directory = C:\Users\Andrew ---------------------------------------------------- c: clear console window ... 0-5: set trace level to <n> ---------------------------------------------------- Trace level set to 5: all ... completed.security: blacklist: hasBeenModifiedSince 1370282598700 (we have 1366432497929) security: blacklist: hasBeenModifiedSince 1366432497958 (we have 1366432497929) network: Created version ID: 1.7.0.21 network: Created version ID: 1.7.0.21 basic: exception: java.lang.reflect.InvocationTargetException. java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.runOnEDTAndWait(Unknown Source) at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.instantiateApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.reflect.InvocationTargetException at com.sun.deploy.uitoolkit.impl.awt.OldPluginAWTUtil.invokeAndWait(Unknown Source) ... 5 more Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "exitVM.0") at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkExit(Unknown Source) at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source) at main.MainGame.run(MainGame.java:36) at main.MainGame.<init>(MainGame.java:31) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter$1.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@1f312f0 security: Reset deny session certificate store security: blacklist: hasBeenModifiedSince 1366740392097 (we have 1366432497929) security: blacklist: hasBeenModifiedSince 1369035157319 (we have 1366432497929) network: CleanupThread used 6369043 us basic: PluginMain.unregisterApplet: 1 from mananger sun.plugin2.applet.Applet2Manager@1823290 network: Checking for update at: javadl-esd-secure.oracle/update/baseline.version network: Checking for update at: javadl-esd-secure.oracle/update/blacklisted.certs network: Checking for update at: javadl-esd-secure.oracle/update/blacklist security: JSS is not configured network: Connecting javadl-esd-secure.oracle/update/baseline.version with proxy=DIRECT network: Connecting javadl-esd-secure.oracle/update/blacklisted.certs with proxy=DIRECT network: Connecting javadl-esd-secure.oracle/update/blacklist with proxy=DIRECT network: Connecting javadl-esd-secure.oracle:443/ with proxy=DIRECT network: Connecting javadl-esd-secure.oracle:443/ with proxy=DIRECT network: Connecting javadl-esd-secure.oracle:443/ with proxy=DIRECT security: Loading Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts security: Loaded Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts security: Loading SSL Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts security: Loaded SSL Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts security: Loading certificates from Deployment session certificate store security: Loaded certificates from Deployment session certificate store security: Loading certificates from Deployment session certificate store security: Loaded certificates from Deployment session certificate store security: Loading certificates from Deployment session certificate store security: Loaded certificates from Deployment session certificate store network: Cookie service is not available - use cache to determine "Cookie" network: Cookie service is not available - use cache to determine "Cookie" network: Cookie service is not available - use cache to determine "Cookie"

重要的部分是:

Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "exitVM.0")

这是怎么引起的:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

甚至不是一个值得信赖的小程序可以(至少应该去尝试)退出JVM。

Not even a trusted applet can (or at least should even try) to exit the JVM.

与气垫船全部鳗鱼的,这是一个框架不佳鞋有角应运而生一个applet的主旨同意。启动使用 Java Web Start的框架。

Agree with the general thrust of Hovercraft Full Of Eels in that this is a frame poorly shoe-horned into being an applet. Launch the frame using Java Web Start.

更多推荐

在小程序java.lang.reflect.invocationtargetexception错误

本文发布于:2023-10-28 23:35:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1538095.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   程序   java   lang   reflect

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!