Java 1.7不允许通过applet访问客户端计算机中的系统根首选项

时间:2014-04-23 11:54:14

标签: applet

我们需要从客户端机器通过applet调用获取硬打印机列表。

它在java 1.6中运行良好。但是在1.7中,即使我们给予了所有许可,它也会抛出异常,如下所示。

New Method got Error:access denied ("java.lang.RuntimePermission" "preferences")
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "preferences")
 at java.security.AccessControlContext.checkPermission(Unknown Source)
 at java.security.AccessController.checkPermission(Unknown Source)
 at java.lang.SecurityManager.checkPermission(Unknown Source)
 at java.util.prefs.Preferences.systemRoot(Unknown Source)
 at printer.Printers.getAvailableNewPrinters(Printers.java:134)
 at printer.Printers.getAvailablePrinters(Printers.java:66)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
 at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
 at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
 at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)

1 个答案:

答案 0 :(得分:0)

1)应用程序被安全设置阻止了 新版本的java 1.7 update 51之前存在问题,因为限制是在三个级别完成的 •非常高:最安全的设置 - 只允许运行来自受信任机构的非过期证书标识的Java应用程序。 •高(建议的最小值):允许运行来自受信任机构的证书标识的Java应用程序。 •中 - 在提示安全提示后,将允许所有Java应用程序运行。 http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/security-spec.doc3.html

可能有帮助