【问题标题】:Unable to load chromedriver from Java app [duplicate]无法从 Java 应用程序加载 chromedriver [重复]
【发布时间】:2020-09-13 03:00:52
【问题描述】:

我的 Java 应用程序访问 chromedriver 时遇到问题,我已与 htop 确认过:

    $htop
    PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
    22459 root       20   0 16632  7896  6820 S  0.0  0.8  0:00.06 sshd: root@pts/1
    22380 root       20   0 2690M  700M 12172 S  0.0 70.9  0:00.19 java -jar backend-server-0-SNAPSHOT-microbundle.jar --logToFile backend.log
    22214 root       20   0 2690M  700M 12172 S  0.0 70.9  0:00.09 java -jar backend-server-0-SNAPSHOT-microbundle.jar --logToFile backend.log
    22340 root       20   0 2690M  700M 12172 S  0.0 70.9  0:00.01 java -jar backend-server-0-SNAPSHOT-microbundle.jar --logToFile backend.log
    22342 root       20   0 2690M  700M 12172 S  0.0 70.9  0:00.02 java -jar backend-server-0-SNAPSHOT-microbundle.jar --logToFile backend.log

然后在Java代码里面:

System.setProperty("webdriver.chrome.driver", chromeDriverPath);
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors");
WebDriver driver = new ChromeDriver(options);

但是这会引发:

Caused by: java.lang.NoSuchMethodError: 'void com.google.common.base.Preconditions.checkState(boolean, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)'
        at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:125)
        at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35)
        at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:156)
        at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:346)
        at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:91)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157) 

在此之前,chromedriver 是通过(我使用的是 Debian 服务器)安装的:

sudo mv chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver

并检查chromedriverGoogle chrome

root@localhost:~# /usr/bin/chromedriver --version
ChromeDriver 85.0.4183.87 (cd6713ebf92fa1cacc0f1a598df280093af0c5d7-refs/branch-heads/4183@{#1689})
root@localhost:~# google-chrome --version
Google Chrome 85.0.4183.102

我想知道为什么 Java 应用程序无法执行驱动程序?

【问题讨论】:

  • 我已经在 Windows 机器上进行了测试,相同的代码二进制 jar 并且代码有效。唯一的问题是 Linux/Debian 机器。

标签: java linux selenium selenium-chromedriver debian


【解决方案1】:

这是因为您使用的是旧番石榴罐。 如果你更新到 latest 或 guava-21.0.jar 那么这个问题就会得到解决。

下载更新的guava jar https://github.com/google/guava/wiki/Release22

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>
 

【讨论】:

  • 这是不正确的,我的应用正在使用版本28.2-jre
  • 实际上,我在 2 年前就遇到了这个问题,你能用给定的 pom 告诉我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多