ブラウザを介して JWindow を作成するアプレットを起動すると、Java コンソールが次の AccessControlException をスローします。
アクセスが拒否されました java.awt.AWTPermission "setWindowAlwaysOnTop"
JFrame を常に一番上に置き、ポリシー ファイルにアクセス許可を付与し、特権コードを使用したいのですが、問題は解決しません。どうすればよいですか?
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.security.AccessController;
import java.security.PrivilegedAction;
import javax.swing.JButton;
import javax.swing.JFrame;
public class appletJFrame extends Applet
{
public void start()
{
//create a frame
final JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//add a button
JButton doneButton = new JButton("demo");
doneButton.setFont(new Font("Calibri", doneButton.getFont().getStyle(), doneButton.getFont().getSize()));
doneButton.setBackground(new Color(53,168,51));
frame.getContentPane().add(doneButton);
AccessController.doPrivileged(
new PrivilegedAction<Object>()
{
public Object run()
{
frame.setAlwaysOnTop(true);//gives an error for this
return null;
}
}
);
}
}
アプリケーションの起動に使用している JNLP ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="Launcher.jnlp">
<information>
<title>xyz</title>
<vendor>xyz</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="MyJar.jar"
main="true" /> //can be resolved
<jar href="jna.jar" /> //cannot be resolved(used as imports in main class)
<jar href="platform.jar" /> //cannot be resolved(used as imports in main class)
<jar href="xuggle-xuggler.jar" /> //cannot be resolved(used as imports in main class)
<jar href="xuggle-xuggler-test.jar" /> //cannot be resolved(used as imports in main class)
</resources>
<application-desc
name="Example"
main-class=
"Launch"
width="300"
height="300">
</application-desc>
<security>
<all-permissions/>
</security>
<offline-allowed />
<update check="background"/>
</jnlp>
MyJar.Jar 内のクラスを除くすべてのクラスに対して、no class definition found excwption を取得します。