【发布时间】: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
并检查chromedriver 和Google 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