如何修复NoClassDefFoundError:CircularOutputStream错误?

时间:2016-04-13 01:01:28

标签: java maven selenium-webdriver phantomjs headless

我刚刚为Selenium WebDriver(a.k.a。Selenium 2)创建了一个简单的maven项目,用于无头测试。我在pom.xml中添加了PhantomJS驱动程序依赖项和其他依赖项:

<# : batch portion
@echo off & setlocal

powershell -noprofile -noninteractive "iex (${%~f0} | out-string)"
goto :EOF

: end batch / begin PowerShell #>

add-type -Assembly System.Windows.Forms
$newdir = "landscape"

if (-not (test-path $newdir)) { md $newdir }

gci | ?{ $_.Name -match "\.(jpe?g|bmp|gif|png)$" } | %{

    $size = [Drawing.Image]::FromFile($_).Size
    if ($size.Width -gt $size.Height) {
        # remove the -whatif flag to enable moves
        mv $_.FullName $newdir -whatif
    } else {
        write-host ("{0} was portrait.  Not moving." -f $_.FullName) -f cyan
    }
}

但是它出现了错误:

<dependency>
    <groupId>com.github.detro</groupId>
    <artifactId>phantomjsdriver</artifactId>
    <version>1.2.0</version>
</dependency>

从pom.xml中删除PhantomJS依赖项可以解决问题并且执行正常。 有人可以帮我找到问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:5)

最后我得到了解决方案。

添加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);

生成错误。

答案 1 :(得分:0)

根据@Ripon comment,问题在于版本兼容性,因此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,则需要make sure you've all dependent jar files in your classpath