当我在Eclipse上运行以下代码(Luna,javavers=8)时,代码会运行并弹出两条错误消息。另一方面,当我将代码嵌入html页面时,代码只显示第一条错误消息。调用ForkJoinPool类似乎会破坏firefox上的小程序。你知道为什么吗?这是代码。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.ForkJoinPool;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ProvaVera extends JApplet
{
public void start()
{
SwingUtilities.invokeLater(new Runnable(){
public void run()
{
MainPanel panel = new MainPanel();
// Add Swing components to content pane
Container c = getContentPane();
c.add(panel, BorderLayout.CENTER);
}
});
}
}
class MainPanel extends JPanel
{
public MainPanel()
{
JLabel label1 = new JLabel("label1");
this.add(label1);
JButton btn1 = new JButton("button1");
this.add(btn1);
btn1.addActionListener (
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
metodo();
}
}
);
}
public void metodo()
{
JOptionPane.showMessageDialog(new JFrame(), "test1", "Dialog", JOptionPane.ERROR_MESSAGE);
ForkJoinPool pool = new ForkJoinPool();
JOptionPane.showMessageDialog(new JFrame(), "test2", "Dialog", JOptionPane.ERROR_MESSAGE);
}
}
您可能会遇到安全异常,因为ForkJoinPool
需要"modifyThread"运行时权限。
当您在Eclipse中运行时,没有安装安全管理器,因此不会出现安全异常。当你在浏览器中运行时,有一个严格的安全管理器。
我已经从Java控制面板启用了Java控制台。错误是:java.security.AccessControlException:拒绝访问("java.lang.RuntimePermission"modifyThread")
因此,我转到位于java.home/lib/security/中的java.policy文件,并编写了以下
grant codeBase "url or file where the applet is" {
permission java.lang.RuntimePermission "modifyThread";
};
现在小程序正在工作。
再次感谢您的支持。