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,则需要