java - 如何解析 java.net.SocketPermission

标签 java selenium selenium-webdriver phantomjs

当我在服务器中运行 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.policy 文件中添加 permission java.net.SocketPermission "localhost:15990", "listen, resolve"。您可以在 jre > lib > security 文件夹中找到此文件

关于java - 如何解析 java.net.SocketPermission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27688440/

相关文章:

Java - 正则表达式解析字符串

java - Netty 和非标准 TCP 连接

java - 是否可以在 Eclipse 中使成员变量自动私有(private)化?

java - 为 JPanel 创建构造函数来创建圆圈?

java - 如何关闭selenium webdriver中的语言选项框

java - 使用 selenium webdriver 从屏幕 A(网页)跳转到屏幕 B(网页),绕过中间屏幕(网页)

python - Selenium ChromeDriver 无法识别新编译的 Headless Chromium(Python)

java - 如何通过java使用appium和selenium处理webview

javascript - Selenium-webdriver JS - 如何等到元素可见

java - 无法在 Selenium 中打开浏览器