JApplet в appletviewer / JRE1.6.0_30 - исключение NullPointerException для getParameter ("someArg") - PullRequest
0 голосов
/ 03 февраля 2012

Почему я получаю 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";

}

Нет файла политики безопасности, нет других пакетов и только две библиотеки: а) swing-layout-1.0.4.jar б) JDK-1.6 (по умолчанию)

Ответы [ 2 ]

1 голос
/ 03 февраля 2012
  1. Этот код не выдает NPE при запуске в средстве просмотра апплета. Это не удивительно для меня, так как он загружает открытый класс апплета, а затем вызывает init() и run(). Никогда бы он не назвал main(String[]).
  2. Что приводит меня к выводу, что вы запускаете «апплет», вызывая main(String[]), не используя средство просмотра апплета. Выполнение таким образом вызовет , что вызовет NPE, поскольку не было настроено и инициализировано контекст / заглушка апплета. Для этого требуется определенная работа.
1 голос
/ 03 февраля 2012

Реализация метода в классе Applet:

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

Таким образом, вызов метода transient private AppletStub stub вызывает исключение.
Апплеты имеют другой жизненный цикл, чем обычное приложение.Я предлагаю вам взглянуть на официальные руководства по Java на Applets .

...