首页 > 解决方案 > java.lang.ExceptionInInitializerError 原因:java.lang.IllegalStateException:驱动程序可执行文件的路径必须使用 Selenium 和 Java 设置

问题描述

public class Login 
{
    static WebDriver driver = new ChromeDriver();   
    @SuppressWarnings("resource")
    public static void main(String[] args) throws InterruptedException 
    {

        System.setProperty("webdriver.chrome.driver","C:\\Users\\MMFD-3\\MYData\\chromedriver.exe");    
        String baseUrl = "https://stackoverflow.com/";                  
        driver.get(baseUrl);
    }
}

线程“main”中的异常 java.lang.ExceptionInInitializerError 原因:java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;有关更多信息,请参阅 https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver。最新版本可从 http://chromedriver.storage.googleapis.com/index.html下载 在 com.google.common.base.Preconditions.checkState(Preconditions.java:754) 在 org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134) 在 org.openqa.selenium.chrome.ChromeDriverService .access$000(ChromeDriverService.java:32) 在 org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) 在 org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService. java:355) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123) at newpacakge.Login.(Login.java :14)

标签: javaseleniumgoogle-chromewebdriverselenium-chromedriver

解决方案


此错误消息...

Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver.

...意味着您的程序无法找到chromedriver可执行文件。


看来你已经很接近了。在类定义中,您可以粗略地声明WebDriver实例,如下所示:

static WebDriver driver;

但是你不能像你一样实例化它:

static WebDriver driver = new ChromeDriver(); 

除非您特别提到chromedriver可执行文件的绝对路径。


解决方案

您需要将初始化部分与声明分开:

static WebDriver driver;

将 初始化webdriver为 later 的实例,ChromeDriver()如下所示:

System.setProperty("webdriver.chrome.driver","C:\\Users\\MMFD-3\\MYData\\chromedriver.exe");  
String baseUrl = "https://stackoverflow.com/";
driver = new ChromeDriver();
driver.get(baseUrl);

推荐阅读