gpt4 book ai didi

带有 SecurityManager 策略文件的 Java 传送 JAR

转载 作者:行者123 更新时间:2023-12-02 11:50:05 30 4
gpt4 key购买 nike

我正在尝试发布一个执行一些 RMI 调用的 Java 应用程序。

我需要将其作为 JAR 文件发送(这是一个要求,没有办法解决)。

现在,为了允许某些事情(例如套接字和 RMI 连接),我需要一个 SecurityManager 和一个策略文件。

我想将此策略文件发送到 jar 内,并从 JAR 内设置策略路径。

现在,我的代码如下所示:

public static void main(String[] args)
{
System.setProperty("java.security.policy","jar:file:/Policies/Server.policy");
Policy.getPolicy().refresh();

... /* All other code */

}

当我将路径更改为 PC 上的路径并在没有 JAR(IntelliJ“应用程序”)的情况下运行代码时,启动应用程序没有问题,当我尝试运行 JAR 时,出现以下异常:

Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:2000" "listen,resolve")

我感觉我设置的路径错误,谁能告诉我这条路径应该是什么?

最佳答案

我可以通过将代码更改为以下内容来解决此问题:

public static void main(String[] args)
{
boolean quit = false;

String serverPolicyPath = "/Policies/Server.policy";
URL serverPolicyURL = Main.class.getResource(serverPolicyPath);

if (serverPolicyURL == null)
{
System.err.println("getResource returned NULL");
return;
}

System.setProperty("java.security.policy",serverPolicyURL.toString());
Policy.getPolicy().refresh();

...

我没有尝试手动找出路径,而是让 Java 帮我修复它。

关于带有 SecurityManager 策略文件的 Java 传送 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47947766/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com