webstart应用程序日志记录权限被拒绝

是否可以使用java.util.Logging并登录到java webstart应用程序中的文件? 我有以下日志记录代码:


  Handler fh = new FileHandler(“myapp.log”);
  Logger.getLogger(MyApp.class.getName())addHandler操作(FH)。

并得到以下exception:


 java.security.AccessControlException:拒绝访问(java.util.logging.LoggingPermission控件)
     at java.security.AccessControlContext.checkPermission(Unknown Source)
    在java.security.AccessController.checkPermission(未知来源)
    在java.lang.SecurityManager.checkPermission(未知来源)
    在java.util.logging.LogManager.checkAccess(未知来源)
    在java.util.logging.Handler.checkAccess(未知来源)
    在java.util.logging.FileHandler。(未知来源)
     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)
    在java.lang.reflect.Method.invoke(未知来源)
     at com.sun.javaws.Launcher.executeApplication(Unknown Source)
     at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
     at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    在com.sun.javaws.Launcher.run(未知来源)
    在java.lang.Thread.run(未知来源)

访问控制exception说明了这一点:

“拒绝访问(java.util.logging.LoggingPermission control)”

权限类的javadoc说:

“目前只有一个名为LoggingPermission。这是”控制“,它授予控制日志记录配置的能力,例如通过添加或删除处理程序,添加或删除filter,或更改日志记录级别。

您正在做的事情显然属于“控制”许可。

如果要创建/添加自己的日志处理程序,则需要对应用程序进行签名。


顺便提一下,如果您确实设法解决了LoggingPermission("control") ,那么在打开日志文件时会遇到另一个访问问题。

通过签署应用程序可以解决这两个问题。 然后,您遇到了用户必须接受/信任您的签名密钥的问题。 但这很公平! 就Java安全沙箱而言,您正在做的事情可能会损害用户的计算机。

您是否尝试过指定绝对路径? 也许问题是您无法访问应用程序本身的当前工作目录。