是否可以使用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)
答案 0 :(得分:6)
访问控制异常说明了这一点:
“访问被拒绝(java.util.logging.LoggingPermission control)”
权限类的javadoc说明了这一点:
“目前只有一个名为LoggingPermission。这是”控制“,它授予控制日志配置的能力,例如通过添加或删除处理程序,添加或删除过滤器,或更改日志记录级别“
您所做的事情显然属于“控制”许可范围。
如果要创建/添加自己的日志处理程序,则需要对应用程序进行签名。
顺便说一句,如果您确实设法解决LoggingPermission("control")
,那么在打开日志文件时会遇到另一个访问问题。
通过签署应用程序解决了这两个问题。然后,您就遇到了用户必须接受/信任您的签名密钥的问题。但这很公平!就Java安全沙箱而言,您正在做的事情可能会损坏用户的计算机。
答案 1 :(得分:0)
您是否尝试过指定绝对路径?也许问题是您无法访问应用程序本身的当前工作目录。