【问题标题】:how to resolve java.net.SocketPermission如何解决 java.net.SocketPermission
【发布时间】:2026-01-29 09:10:01
【问题描述】:

当我在服务器中运行 java 代码时,它会显示以下异常:

java.security.AccessControlException: 访问被拒绝 ("java.net.SocketPermission" "localhost:15990" "listen,resolve")

这是我的java代码:

 public String getSessionCookies(String user, String pass,String loginUrl,String phantomPath) {
         StringBuilder builder=new StringBuilder();        
        try{        
             PhantomJSDriverService service = new PhantomJSDriverService.Builder().usingAnyFreePort().usingPhantomJSExecutable(new File(phantomPath)).build();

            DesiredCapabilities caps = new DesiredCapabilities();
            caps.setJavascriptEnabled(true);// not really needed: JS enabled by default
            caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,phantomPath);  
            driver = new PhantomJSDriver(service,DesiredCapabilities.phantomjs());
            driver.get(loginUrl);
            System.out.println(driver.getTitle());
            driver.findElement(By.id("login:loginName")).sendKeys(user);
            driver.findElement(By.id("login:password")).sendKeys(pass);
            waitForJQueryProcessing(driver, 5);
            driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/div[2]/button[1]")).click();
            Thread.sleep(10000);
            driver.get("https://ecf.ca2.uscourts.gov/");  
            Thread.sleep(10000);
            Set<org.openqa.selenium.Cookie> allCookies=driver.manage().getCookies();
            for ( org.openqa.selenium.Cookie loadedCookie : allCookies) {
                   builder.append(String.format("%s->%s, ", loadedCookie.getName(),loadedCookie.getValue()));
                   //System.out.println(String.format("%s->%s, ", loadedCookie.getName(),loadedCookie.getValue()));
            }    
            driver.close();
        }catch(Exception e){
            System.out.println(e.getStackTrace());
            writeFile(e.toString(),phantomPath);
        }
        return builder.toString();
    }

以上代码在本地系统中完美运行,但是当我必须调用服务器时,它会产生上述异常。

请提供您的建议。

谢谢

【问题讨论】:

标签: java selenium selenium-webdriver phantomjs


【解决方案1】:

在您的 java.policy 文件中添加 permission java.net.SocketPermission "localhost:15990", "listen, resolve"。您可以在 jre &gt; lib &gt; security 文件夹中找到此文件

【讨论】:

  • 如何设置服务器权限?
  • 如果您使用的是 JDK 容器,路径似乎是 usr/local/openjdk-15/conf/security/java.policy(例如)。
最近更新 更多