0

爲什麼我在調用getParameter()這個非常簡單的JApplet實例時調用NullPointerExceptionappletviewer/JRE1.6.0_30中的JApplet - getParameter(「someArg」)上的NullPointerException

public class TestPad extends javax.swing.JApplet { 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       TestPad appletDefn = new TestPad(); 

       TestPad.sSomeParam = (String)appletDefn.getParameter("sSomeParam"); 

       appletDefn.init(); 

       appletDefn.start(); 
      } 
     }); 
    } 

    private static String sSomeParam = "sSomeArg"; 

} 

沒有安全策略文件,沒有其他的包,只有兩個庫: 一)擺動佈局1.0.4.jar B)JDK-1.6(默認)

回答

1

的實施方法在Applet類:

public String getParameter(String name) { 
    return stub.getParameter(name); 
} 

於是就transient private AppletStub stub的方法調用拋出的異常。
Applets擁有比普通應用程序更多的生命週期。我建議你看看official Java tutorials on Applets

1
  1. 該代碼在applet查看器中運行時不會引發NPE。這對我來說並不奇怪,因爲它會加載公共小程序類,然後調用init()run()。在任何時候它都不會打電話給main(String[])
  2. 這使我得出結論,您正在運行'applet',通過調用main(String[])而不是使用applet查看器。以這種方式運行導致NPE,因爲沒有設置和初始化小應用程序上下文/存根。這需要做一些工作。