ExceptionInInitializerError,如何查明错误位置

时间:2014-04-01 19:56:34

标签: java swing netbeans exception-handling applet

我获得了ExceptionInInitializerError。我已经被告知" getException()方法现在被称为原因,并且可以通过Throwable.getCause()方法以及前面提到的"遗留方法来访问。" "致电getCause()" 如何将这些方法应用于我的代码以查找错误?例如,我只是把它放在课程的开头吗?试试环绕?我能看到一个例子吗?谢谢,

编辑:好的,这是整个错误日志:

CacheEntry[file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar]: updateAvailable=false,lastModified=Sat Mar 22 11:39:02 PDT 2014,length=225068
0
CacheEntry[file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar]: updateAvailable=false,lastModified=Sat Mar 22 11:39:02 PDT 2014,length=225068
Trace level set to 5: all ... completed.ui: Pushing modality for applet ID 14 with dialog sun.plugin.util.PluginSysUtil$DummyDialog[dialog0,-100,-100,132x38,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,126x10,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
basic: Dialog type is not candidate for embedding
ui: Pushing modality for applet ID 14 with dialog javax.swing.JDialog[dialog1,425,258,516x190,layout=java.awt.BorderLayout,TOOLKIT_MODAL,title=Application Error,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,510x162,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
basic: PluginMain.unregisterApplet: 14 from mananger sun.plugin2.applet.Applet2Manager@1d9024f
preloader: Construct preloader delegate
preloader: Setting default preloader and progress monitor for non JNLP applets
basic: Added progress listener: sun.plugin.util.ProgressMonitorAdapter@124f232
preloader: Installing progress monitor true
basic: Plugin2ClassLoader.addURL parent called for file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar
network: Cache entry found [url: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar, version: null] prevalidated=false/0
cache: Adding MemoryCache entry: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar
cache: Resource file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar has expired.
network: ResponseCode for file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar : 200
network: Encoding for file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar : null
CacheEntry[file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar]: updateAvailable=false,lastModified=Sat Mar 22 11:39:02 PDT 2014,length=225068
cache: Reading Signers from 5 file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar | C:\Users\Camtronius\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\50\7023cb32-6e9bc9fb.idx
network: No certificate info for unsigned JAR file: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar
cache: Done readSigners(file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar)
cache:  Read manifest for file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar: read=194 full=194
preloader: Using preloader class: null com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter@d4ba66
preloader: Using default preloader
preloader: Requested to use preloader class: null
ruleset: Non-jnlp rule id: 
        title: sonomaroller/SonomaRoller
        location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/AppletTest.html
        jar location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar
        jar version: null
        isArtifact: true
ruleset: finding Deployment Rule Set for 
        title: sonomaroller/SonomaRoller
        location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/AppletTest.html
        jar location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/sonomaroller/SonomaRoller.jar
        jar version: null
        isArtifact: true
ruleset: no rule applies, returning Default Rule
network: Created version ID: 1.7.0.51
network: Created version ID: 1.7.0.51
network: Created version ID: 1.7.0.51
network: Created version ID: 1.7.0.51
ruleset: Non-jnlp rule id: 
        title: sonomaroller/SonomaRoller
        location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/AppletTest.html
        jar location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/
        jar version: null
        isArtifact: true
ruleset: finding Deployment Rule Set for 
        title: sonomaroller/SonomaRoller
        location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/AppletTest.html
        jar location: file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/
        jar version: null
        isArtifact: true
ruleset: no rule applies, returning Default Rule
security: SSV validation:
    running: 1.7.0_51
    requested: null
    range: null
    javaVersionParam: null
    Rule Set version: null
network: Created version ID: 1.7.0.51
network: Created version ID: 1.7.0.51
security: continue with running version
network: Created version ID: 1.7.0.51
network: Created version ID: 1.7
network: Created version ID: 2.2.51
security:  --- parseCommandLine converted : 
into:
[]
preloader: Added pending event 1: AppletInitEvent[type=CallConstructor]
preloader: Delivering: AppletInitEvent[type=CallConstructor]
preloader: Skipped all (0) download events prior to null
preloader: Start progressCheck thread
preloader: GrayBox: parent = sun.plugin2.main.client.PluginEmbeddedFrame[frame2,0,0,550x550,layout=java.awt.BorderLayout,title=,resizable,normal]
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 sonomaroller.SonomaRoller.<init>(SonomaRoller.java:19)
    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.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)
preloader: Delivering: ErrorEvent[url=file:/C:/Users/Camtronius/Documents/NetBeansProjects/SonomaRoller/build/classes/ label=java.lang.reflect.InvocationTargetException cause=java.lang.reflect.InvocationTargetException
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@124f232
preloader: Preloader shutdown after ErrorEvent
preloader: Stop progressCheck thread
ui: Show default error panel
security: Reset deny session certificate store
basic: PluginMain.unregisterApplet: 15 from mananger sun.plugin2.applet.Applet2Manager@18f9ba9

2 个答案:

答案 0 :(得分:1)

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

这是异常的根原因。在applet中看到这一点的最常见原因是applet创建了JFrame并调用:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

应使用DISPOSE_ON_CLOSE调用此方法。如果在关闭框架时退出JVM,它将结束运行applet的JVM,以及在同一VM中运行的任何其他applet。

提示

为什么要编写applet?如果是由于规格。请老师将其转介给Why CS teachers should stop teaching Java applets

基本上,applet一直很难开发,最近变得更加困难。有明显缺乏经验的人(例如,无法理解堆栈跟踪)应该避免使用applet,直到你开发了至少几个桌面应用程序。

答案 1 :(得分:0)

您应该阅读tutorial on exceptions

以下是捕获异常并打印堆栈跟踪的示例。以下代码在第12行UIManager.setLookAndFeel("bbbb");

处引发异常
public class ExceptionFinder {

    public static void main(String[] args) {

        try {
            UIManager.setLookAndFeel("sasa");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这是一个堆栈跟踪。注意最底部的行(在这种情况下)如何指出错误发生的位置。这就是您需要向那些试图回答您问题的人展示的内容。

enter image description here