【问题标题】:JApplet in appletviewer / JRE1.6.0_30 — NullPointerException on getParameter("someArg")appletviewer / JRE1.6.0_30 中的 JApplet — getParameter("someArg") 上的 NullPointerException
【发布时间】:2012-02-03 00:03:14
【问题描述】:

为什么我在这个非常简单的JApplet 实例化中调用getParameter() 时会得到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";

}

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

【问题讨论】:

    标签: java nullpointerexception japplet getparameter appletviewer


    【解决方案1】:

    Applet类中方法的实现:

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

    所以transient private AppletStub stub上的方法调用会抛出异常。
    Applet 有一个不同于普通应用程序的生命周期。我建议你看看official Java tutorials on Applets

    【讨论】:

      【解决方案2】:
      1. 该代码在此处的小程序查看器中运行时不会引发 NPE。这对我来说并不奇怪,因为它会加载公共小程序类,然后调用init()run()。它绝不会调用main(String[])
      2. 这使我得出结论,您正在通过调用main(String[]) 运行“小程序”,而不是使用小程序查看器。以这种方式运行它导致 NPE,因为没有设置和初始化小程序上下文/存根。这需要一些工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-01
        • 2013-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多