How to fix NoClassDefFoundError: CircularOutputStream error?
How to fix NoClassDefFoundError: CircularOutputStream error?
我刚刚为 Selenium WebDriver(a.k.a.Selenium 2) 自动测试创建了一个简单的 maven 项目,用于无头测试。我在 pom.xml:
中添加了如下 PhantomJS 驱动程序依赖项和其他依赖项
<dependency>
<groupId>com.github.detro</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.2.0</version>
</dependency>
但是出现错误:
java.lang.NoClassDefFoundError: org/openqa/selenium/io/CircularOutputStream
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:60)
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:56)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at jp.co.skygate.home.HomePageLogin.setUp(HomePageLogin.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
只需从 pom.xml 中删除 PhantomJS 依赖项即可解决问题并且执行良好。
谁能帮我找出问题所在?
提前致谢。
终于找到答案了
添加 PhantomJS v.1.2.0 将 selenium-remote-driver-2.53.0.jar 替换为 selenium-remote-driver-2.41.0.jar 从而打破一切。
现在使用 V.2.41.0,
driver = new FirefoxDriver();
而不是
driver = new PhantomJSDriver(caps);
生成错误。
根据,问题在于版本兼容性,因此Selenium Server 2.53.x 应与Phantom JS 1.3.x 一起使用。
这里是 pom.xml
中应该有效的行:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.3.0</version>
</dependency>
然后 运行 mvn dependency:tree
构建并显示此项目的依赖关系树。
如果您不使用 Maven,则需要 。
我刚刚为 Selenium WebDriver(a.k.a.Selenium 2) 自动测试创建了一个简单的 maven 项目,用于无头测试。我在 pom.xml:
中添加了如下 PhantomJS 驱动程序依赖项和其他依赖项<dependency>
<groupId>com.github.detro</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.2.0</version>
</dependency>
但是出现错误:
java.lang.NoClassDefFoundError: org/openqa/selenium/io/CircularOutputStream
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:60)
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:56)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at jp.co.skygate.home.HomePageLogin.setUp(HomePageLogin.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
只需从 pom.xml 中删除 PhantomJS 依赖项即可解决问题并且执行良好。 谁能帮我找出问题所在?
提前致谢。
终于找到答案了
添加 PhantomJS v.1.2.0 将 selenium-remote-driver-2.53.0.jar 替换为 selenium-remote-driver-2.41.0.jar 从而打破一切。 现在使用 V.2.41.0,
driver = new FirefoxDriver();
而不是
driver = new PhantomJSDriver(caps);
生成错误。
根据
这里是 pom.xml
中应该有效的行:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.3.0</version>
</dependency>
然后 运行 mvn dependency:tree
构建并显示此项目的依赖关系树。
如果您不使用 Maven,则需要