java applet ExceptionInInitializerError

时间:2015-04-13 11:06:12

标签: java swing security exception applet

我很擅长使用Applet进行编程,并希望将Applet放到网站上。 所以我们走了。

这个项目的目标是,如果你点击按钮,它将在浏览器顶部打开一个JFrame。但在测试时,它给了我一个java.lang.ExceptionInInitializerError。 这是源代码:

public class LaunchMenu extends Applet {

    public static LoginScreen login;
    public static Game game;
    public JButton button;
    public void init() {
        try {button= new JButton("Press this button to start");
        add(button);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                login = new LoginScreen();

            }
        });
        } catch (Exception e) {
            e.getMessage();
            e.getCause();
        }
    }

    public void start() {
        login = new LoginScreen();
    }

    public void stop() {
        login.dispose();
        game.stop();
    }

    public static void main(String[] args) {

    }

}

注意:它可以在Eclipse中使用它的Applet窗口,但不能在网站上使用。

编辑:

Exception in thread "AWT-EventQueue-2" java.lang.IllegalStateException: Applet's parent container not set up
    at sun.plugin2.applet.Plugin2Manager.start(Unknown Source)
    at sun.plugin2.main.client.PluginMain$StartAppletRunner.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
CacheEntry[http://localhost/AppletTest/Applet.jar]: updateAvailable=true,lastModified=Mon Apr 13 12:24:52 CEST 2015,length=5051938

1 个答案:

答案 0 :(得分:1)

好的我解决了我的问题。这是适合我的解决方案。

SourceCode保持不变(小改变除外)<:em> *:

public class LaunchMenu extends Applet {

    public static LoginScreen login;
    public static Game game;
    public JButton button;
    public void init() {
        try {button= new JButton("Start the game");
        add(button);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                login = new LoginScreen();
                login.setVisible(true); *

            }
        });
        } catch (Exception e) {
            e.getMessage();
            e.getCause();
        }
    }

    public void start() {
        login = new LoginScreen();
    }

    public void stop() {
        login.dispose();
        game.stop();
    }

    public static void main(String[] args) {

    }
}

但是我在与Applet相同的文件夹中添加了java.policy文件。 在这个文件中,我编写了以下代码:

grant { 
      permission java.security.AllPermission; 
}; 

设置完成后,我又遇到了另一个名为java.lang.RuntimePermission: "exitVM.0"

的问题

这个问题的解决方案很简单。在我的JFrame类中,在我的案例LoginScreen中,有一个行代码setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);。删除或评论它,这对我有用,现在我的Applet可见,登录框打开。这就是我所需要的。

希望这可以帮助很多人遇到同样的问题。