Spring-STS selenium 使用NoClassDefFoundError
Spring-STS selenium usage NoClassDefFoundError
您好,我在使用 selenium-standalone-server 时遇到问题。更多关于我的理解是问题所在。我很困惑为什么我需要在我的项目(构建路径)中引用它。请参阅下面的来源
BrowserService.java
public void start() throws MalformedURLException{
System.out.println("Staring browser...");
System.out.println("Execute RemoteDriver: "+config.isRemote());
if (config.isRemote()){
System.out.println("Starting as RemoteWebDriver execution...");
WebDriver driver = new RemoteWebDriver(new URL("http://192.168.0.102:5555/wd/hub"),
DesiredCapabilities.chrome());
driver.get("http://www.google.com");
}else{
System.out.println("Starting as WebDriver execution...");
}
}
控制台日志
java.lang.NoClassDefFoundError: com/google/common/base/Function
at com.at.regression.service.BrowserService.start(BrowserService.java:33) ~[classes/:na]
at com.at.regression.RegressionToolApplication.run(RegressionToolApplication.java:26) [classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:776) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:760) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:747) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at com.at.regression.RegressionToolApplication.main(RegressionToolApplication.java:20) [classes/:na]
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function
at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_111]
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_111]
... 7 common frames omitted
每当我尝试引用 selenium-server-standalone-2.53.0.jar
时,上述错误将不会发生。那是为什么呢?这个 jar 文件不是用来启动远程驱动程序的吗?像这样
java -jar selenium-server-standalone-2.53.0.jar -role hub
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://192.168.0.102:4444/grid/register/ -Dwebdriver.chrome.driver=./chromedriver.exe
更新
将我的标签从 selenium 特定更改为 spring、springtoolsuite 特定。 selenium 方面已经排除了这不是 selenium 的问题。详情见答案
为了大家的利益。我找到了这个问题的原因。
在他们 github Selenium 3.4.0 RemoteWebDriver NoClassDefFoundError 中的硒专家的帮助下。如您所见,有人指出我的类路径有问题。无论我如何调查它,我似乎都找不到导致类路径错误的部分帽子。所以我所做的就是改变 IDE。
当我遇到错误时,我正在使用 STS(Spring 工具套件)。这是我遇到类路径错误的地方。现在,我决定更改为 Eclipse 4.6.3(neon),错误已修复。我只需要在我的 Maven 上包含 selenium-server 3.4.0 依赖项。直到有人有时间去进一步调查 STS 问题。现在就够了。
至于类路径错误的原因,目前我不知道为什么会这样,我能想到的是 IDE 本身一定有问题。自从 Eclipse 为我工作以来,我没有更进一步。
至于 selenium-standalone-server-.jar,我仍然认为这不应该在您的项目中引用,因为它用于启动一些远程驱动程序。 selenium-server 已经可以容纳那些 类 需要的
希望对您有所帮助
更新
因为我正计划按照@Kris 在下面的评论中的建议将其发布在 Git 上,当时我遇到了修复(某种程度上)。当我收集要发布到 Git 的数据时,我对 .m2/repository 文件夹进行了清理,我删除了所有内容并让项目重新构建。错误从未发生。现在,这可能是一个 Maven 问题,所以为了大家的利益只是在这里更新它
您好,我在使用 selenium-standalone-server 时遇到问题。更多关于我的理解是问题所在。我很困惑为什么我需要在我的项目(构建路径)中引用它。请参阅下面的来源
BrowserService.java
public void start() throws MalformedURLException{
System.out.println("Staring browser...");
System.out.println("Execute RemoteDriver: "+config.isRemote());
if (config.isRemote()){
System.out.println("Starting as RemoteWebDriver execution...");
WebDriver driver = new RemoteWebDriver(new URL("http://192.168.0.102:5555/wd/hub"),
DesiredCapabilities.chrome());
driver.get("http://www.google.com");
}else{
System.out.println("Starting as WebDriver execution...");
}
}
控制台日志
java.lang.NoClassDefFoundError: com/google/common/base/Function
at com.at.regression.service.BrowserService.start(BrowserService.java:33) ~[classes/:na]
at com.at.regression.RegressionToolApplication.run(RegressionToolApplication.java:26) [classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:776) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:760) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:747) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
at com.at.regression.RegressionToolApplication.main(RegressionToolApplication.java:20) [classes/:na]
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function
at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_111]
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_111]
... 7 common frames omitted
每当我尝试引用 selenium-server-standalone-2.53.0.jar
时,上述错误将不会发生。那是为什么呢?这个 jar 文件不是用来启动远程驱动程序的吗?像这样
java -jar selenium-server-standalone-2.53.0.jar -role hub
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://192.168.0.102:4444/grid/register/ -Dwebdriver.chrome.driver=./chromedriver.exe
更新
将我的标签从 selenium 特定更改为 spring、springtoolsuite 特定。 selenium 方面已经排除了这不是 selenium 的问题。详情见答案
为了大家的利益。我找到了这个问题的原因。
在他们 github Selenium 3.4.0 RemoteWebDriver NoClassDefFoundError 中的硒专家的帮助下。如您所见,有人指出我的类路径有问题。无论我如何调查它,我似乎都找不到导致类路径错误的部分帽子。所以我所做的就是改变 IDE。
当我遇到错误时,我正在使用 STS(Spring 工具套件)。这是我遇到类路径错误的地方。现在,我决定更改为 Eclipse 4.6.3(neon),错误已修复。我只需要在我的 Maven 上包含 selenium-server 3.4.0 依赖项。直到有人有时间去进一步调查 STS 问题。现在就够了。
至于类路径错误的原因,目前我不知道为什么会这样,我能想到的是 IDE 本身一定有问题。自从 Eclipse 为我工作以来,我没有更进一步。
至于 selenium-standalone-server-.jar,我仍然认为这不应该在您的项目中引用,因为它用于启动一些远程驱动程序。 selenium-server 已经可以容纳那些 类 需要的
希望对您有所帮助
更新
因为我正计划按照@Kris 在下面的评论中的建议将其发布在 Git 上,当时我遇到了修复(某种程度上)。当我收集要发布到 Git 的数据时,我对 .m2/repository 文件夹进行了清理,我删除了所有内容并让项目重新构建。错误从未发生。现在,这可能是一个 Maven 问题,所以为了大家的利益只是在这里更新它