首先我知道我的问题与in here相同。但这个问题并没有帮助我。
我有自我签名的小程序。
jarsigner -verify sJSApplet.jar
jar verified.
Warning:
This jar contains entries whose signer certificate will expire within six months.Applet的目的是从LAN机器打开MS Word文档。
到目前为止,我尝试使用Desktop.open()和Runtime.exec()打开。使用AccessController.doPrivileged而没有。我总是得到java.security.AccessControlException: access denied。
我没有选择。我还能做什么?
我无法使用java.policy文件。
HTML
function openFile( command ) {
var applet = "Applet failed to run. No Java plug-in was found.";
var body = document.getElementsByTagName("body")[0];
var div = document.createElement("div");
div.innerHTML = applet;
body.appendChild(div);
}
Java代码:
public class WordApplet extends JApplet {
@Override
public void init() {
openFile(getParameter("filePath"));
};
public void openFile(final String path) {
AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
try {
Runtime.getRuntime().exec("winword " + path);
//Desktop.getDesktop().open(new File(path));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
}
}全堆栈跟踪
java.security.AccessControlException: access denied (java.io.FilePermission <> execute)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExec(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.test.applet.JSApplet$1.run(JSApplet.java:34)
at java.security.AccessController.doPrivileged(Native Method)
at com.avacoda.swing.JSApplet.openFile(JSApplet.java:29)
at com.avacoda.swing.JSApplet.init(JSApplet.java:25)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Applet initialized