2012-07-11 54 views
0

我在Java 7中有一個JApplet,每次我想在瀏覽器中啓動它時,的的調用JApplet得到一個InvocationTargetException。這裏是我的堆棧跟蹤:InvocationTargetException在調用JApplet中的getParameter()時

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.lang.NullPointerException 
    at java.applet.Applet.getParameter(Unknown Source) 
    at TicTacToe.TicTacToeAppletView.<init>(TicTacToeAppletView.java:34) 
    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$000(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.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) 

我的HTML文件看起來像這樣:

<applet code="TicTacToe/TicTacToeAppletView.class" width="400" height="400"> 
<param name=Size value="4"> 
</applet> 

在同一文件夾中的HTML文件中,有包含所有必要的類文件(名爲井字遊戲的文件夾當然,否則我會得到一個ClassNotFoundException)。

它工作正常,如果我不使用getParameter()。使用這種方法簡單的Java代碼看起來像:

String s = getParameter("Size"); 

那麼到底是什麼原因造成這麼多麻煩?

+0

可粘貼的Java類對應的這個'StackTraceElement'的代碼? '在TicTacToe.TicTacToeAppletView。 (TicTacToeAppletView.java:34)' – asgs 2012-07-11 01:08:58

+0

我做了,它是'String s = getParameter(「Size」);' – 2012-07-11 01:16:52

+0

1)[Test VM]的版本是什麼(http://java.com/zh_CN/download /testjava.jsp)測試瀏覽器的報告? 2)確保驗證HTML。要使用applet標記,它需要是HTML 3.2或HTML 4.01 Transitional。或者更好的是,使用信息中提到的'deployJava.js'編寫小程序元素。 [tag:applet]上的頁面。 – 2012-07-11 03:36:16

回答

1

不應該將參數名稱Size放在引號中嗎?

<param name="Size" value="4"> 

更多關於使用參數請查看Defining and Using Applet Parameters Tutorial

+0

不,它不能......或者不需要......無論如何,不​​用引號就可以工作! (與[this]比較(http://docs.oracle.com/javase/7/docs/api/java/applet/Applet.html#getParameter(java.lang.String)))。此外,用引號或甚至在刪除整個param標籤後,我仍然會得到相同的錯誤。 – 2012-07-11 01:15:07

+0

@MichelMichaelMeyer:你是否在try/catch塊中調用你的applet?你是否按照applet教程在事件派發線程上啓動它? – 2012-07-11 01:17:04

相關問題