appletviewer / JRE1.6.0_30中的JApplet - getParameter上的NullPointerException(“someArg”)

时间:2012-02-03 00:03:14

标签: java nullpointerexception japplet getparameter appletviewer

为什么我在这个非常简单的NullPointerException实例化中调用getParameter()时会收到JApplet

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";

}

没有安全策略文件,没有其他软件包,只有两个库: a)swing-layout-1.0.4.jar b)JDK-1.6(默认)

2 个答案:

答案 0 :(得分:1)

Applet类中方法的实现:

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

因此transient private AppletStub stub上的方法调用会抛出异常 Applet具有除正常应用程序之外的其他生命周期。我建议你看看official Java tutorials on Applets

答案 1 :(得分:1)

  1. 在此处的applet查看器中运行时,该代码不会抛出NPE。这对我来说并不奇怪,因为它会加载公共applet类,然后调用init()run()。它在任何时候都不会调用main(String[])
  2. 通过调用main(String[]),而不是使用applet查看器,我得出的结论是您正在运行'applet'。以这种方式运行 导致NPE,因为没有设置和初始化applet上下文/存根。这需要做一些工作。