使用Java做一个Selenium爬虫项目,可以爬取一些我需要的信息到服务器 我在本地使用Selenium爬虫没有问题,然后我尝试将其部署到Linux服务器并启动它。本地我用idea打包成jar,在linux上用java -jar命令启动,但是启动后每次调用爬虫服务都会出现如下异常
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/openqa/selenium/interactions/Coordinates] with root cause
java.lang.ClassNotFoundException: org.openqa.selenium.interactions.Coordinates
at java.net.URLClassLoader.findClass(URLClassLoader.java:387) ~[na:1.8.0_401]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_401]
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) ~[autoCrawler-0.0.1-SNAPSHOT.jar:na]
这是我的 Selenium 配置
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-dev-shm-usage");
chromeOptions.addArguments("lang=zh_CN.UTF-8");
chromeOptions.addArguments("window-size=1920x1080");
在 Linux 上,Chrome 的版本为 122.0.6261.111,chromedriver 的版本为 122.0.6261.94,Linux 使用的是 JDK 1.8 我找了好久都没有解决这个问题,有谁知道帮我看看到底是怎么回事吗?说实话我真的不太明白
<!-- selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.6.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>4.6.0</version>
</dependency>
我的硒引入的依赖是
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.14.0</version>
</dependency>
他们的依赖关系是错误的