0

この非常に単純なインスタンス化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";

}

セキュリティ ポリシー ファイルや他のパッケージはなく、2 つのライブラリのみ: a) swing-layout-1.0.4.jar b) JDK-1.6 (デフォルト)

4

2 に答える 2

1

Appletクラス内のメソッドの実装:

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

したがって、メソッド呼び出しtransient private AppletStub stubは例外をスローします。
アプレットには、通常のアプリケーションとは別のライフサイクルがあります。アプレットに関する公式のJavaチュートリアルをご覧になることをお勧めします。

于 2012-02-03T00:21:37.603 に答える
1
  1. このコードは、ここのアプレットビューアで実行されたときにNPEをスローしません。これは私にとって驚くことではありません。パブリックアプレットクラスをロードしてから、とを呼び出すinit()からrun()です。いつでもそれは。を呼び出すことはありませんmain(String[])
  2. main(String[])これにより、アプレットビューアを使用せずに、を呼び出して「アプレット」を実行しているという結論に至ります。このように実行すると、アプレットコンテキスト/スタブが設定および初期化されていないため、NPEが発生します。そのためには多少の作業が必要です。
于 2012-02-03T00:42:04.730 に答える