java小程序ExceptionInInitializerError
java applet ExceptionInInitializerError
我是 Applets 编程的新手,想制作一个 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 window,但不能在网站上使用。
编辑:
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.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.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
好的,我解决了我的问题。这是对我有用的解决方案。
源代码保持不变(除了一个小改动)*:
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) {
}
}
但我在与小程序相同的文件夹中添加了一个 java.policy
文件。
在此文件中,我编写了以下代码:
grant {
permission java.security.AllPermission;
};
设置完成后,我 运行 在另一个名为 java.lang.RuntimePermission: "exitVM.0"
的问题中
这个问题的解决方法很简单。在我的 JFrame 的 class 中,在我的例子中 LoginScreen
,有一个行代码 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
。删除它或评论它,这对我有用,现在我的小程序可见并且登录框架打开。这就是我所需要的。
希望这能帮助很多遇到同样问题的人。
我是 Applets 编程的新手,想制作一个 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 window,但不能在网站上使用。
编辑:
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.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.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
好的,我解决了我的问题。这是对我有用的解决方案。
源代码保持不变(除了一个小改动)*:
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) {
}
}
但我在与小程序相同的文件夹中添加了一个 java.policy
文件。
在此文件中,我编写了以下代码:
grant {
permission java.security.AllPermission;
};
设置完成后,我 运行 在另一个名为 java.lang.RuntimePermission: "exitVM.0"
这个问题的解决方法很简单。在我的 JFrame 的 class 中,在我的例子中 LoginScreen
,有一个行代码 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
。删除它或评论它,这对我有用,现在我的小程序可见并且登录框架打开。这就是我所需要的。
希望这能帮助很多遇到同样问题的人。