use*_*480 4 java logging java-web-start
是否可以使用java.util.Logging并登录到java webstart应用程序中的文件?我有以下日志代码:
Handler fh = new FileHandler("myapp.log");
Logger.getLogger(MyApp.class.getName()).addHandler(fh);
并得到以下例外:
java.security.AccessControlException: access denied (java.util.logging.LoggingPermission control)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.util.logging.LogManager.checkAccess(Unknown Source)
at java.util.logging.Handler.checkAccess(Unknown Source)
at java.util.logging.FileHandler.(Unknown Source)
at whoisapiclient.WhoisAPIClientApp.main(WhoisAPIClientApp.java:80)
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 com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
访问控制异常说明了这一点:
"访问被拒绝(java.util.logging.LoggingPermission control)"
权限类的javadoc说:
"目前只有一个名为LoggingPermission.这是"控制",它授予控制日志记录配置的能力,例如通过添加或删除处理程序,添加或删除过滤器,或更改日志记录级别. "
您正在做的事情明显属于"控制"许可.
如果要创建/添加自己的日志处理程序,则需要对应用程序进行签名.
顺便说一句,如果您确实设法解决了这个问题LoggingPermission("control"),那么在打开日志文件时会遇到另一个访问问题.
通过签署应用程序可以解决这两个问题.然后,您就遇到了用户必须接受/信任您的签名密钥的问题.但这很公平!就Java安全沙箱而言,您正在做的事情可能会损害用户的计算机.