【问题标题】:How To Edit Java Policy File?如何编辑 Java 策略文件?
【发布时间】:2014-02-18 17:11:18
【问题描述】:

我在尝试启动 Java DB 时使用 netbeans 时遇到问题。它给了我一个拒绝访问错误。经过一些研究,我发现了这个Unable to start derby database from Netbeans 7.4,它提供了一个修复。我试图编辑 java 策略文件,但我无法打开 java.policy 文件,因为我不确定如何。我也发现了这个,它说明了如何打开 poicy 文件 http://docs.oracle.com/javase/tutorial/security/tour2/wstep1.html 但是当我在命令行输入策略工具时,什么都没有弹出。

这是我不断收到的错误

Mon Jan 27 13:09:48 EST 2014 : Security manager installed using the Basic server security policy.
Mon Jan 27 13:09:48 EST 2014 : access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
    at java.security.AccessController.checkPermission(AccessController.java:559)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkListen(SecurityManager.java:1134)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
    at org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(Unknown Source)
    at org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(Unknown Source)
    at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(Unknown Source)
    at org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(Unknown Source)
    at org.apache.derby.drda.NetworkServerControl.main(Unknown Source)

【问题讨论】:

    标签: java netbeans


    【解决方案1】:

    我在 Mac 上(运行 OSX Mavericks、JDK 1.7 update 51 和 Glassfish 4.0)并且遇到了同样的问题,无法编辑文件。所以我做了以下事情:

    1. 在以下位置找到您的 java.policy 文件 /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/
    2. 通过键入启动 VIM sudo vim java.policy
    3. 通过输入 Vim 命令进入文件插入模式 a
    4. 将以下代码添加到您的权限中: // permission for Glassfish 4.0 deployment permission java.net.SocketPermission "localhost:1527", "listen";
    5. Esc 按钮返回命令模式。
    6. 现在输入:wq 保存并退出文件
    7. 重启服务器应该没问题

    【讨论】:

      【解决方案2】:

      确保在尝试编辑之前备份策略文件 :)

      策略文件只是一个文本文件。您可以像编辑 java 源文件(即使用文本编辑器)一样进行编辑。请记住,首先备份文件(安全起见)。

      希望对您有所帮助:)

      【讨论】:

      • 你能发布“访问被拒绝错误”吗?什么被拒绝,使用端口?访问目录?执行某事的能力?登录数据库?您没有指定被拒绝的内容。你暗示了,但你没有具体说明。因此最好发布实际的错误消息(相关部分)。 :)
      • 好的,所以我用文本编辑器打开它,但我不确定在哪里粘贴这条线,权限 java.net.SocketPermission "localhost:1527", "listen";我可以把它放在最后吗?
      • “grants {....}”中的位置无关紧要。重要的是,你要换一条线。换句话说,您是否已经有一个“permission java.net.SocketPermission”条目。如果是这样,您想替换参数(用您的新设置替换该行)。您不希望同一个 java.net.SocketPermission 有 2 个授权语句。这有意义吗:)
      • 我试图在写字板中编辑文档,但是当我尝试保存 chagnes 时它说访问被拒绝
      • 感谢您的回复。但是,您需要指定“拒绝访问”的含义。我猜这意味着,您当前的操作系统用户(您登录的帐户)不允许对该文件进行写访问。如果正确,您需要确定文件的访问控制列表 (ACL),然后使用适当的权限登录。它仍然只是一个文本文件。因此,我回答了你原来的问题,对吧:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2017-08-28
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      相关资源
      最近更新 更多