2010-04-20 31 views
1

我們剛剛將項目轉換爲使用Maven進行構建和依賴項管理,並且在轉換後,我在嘗試在項目中運行任何JSFUnit測試時遇到以下異常。使用JSFUnit/HtmlUnit/CSSParser時出錯

Exception class=[java.lang.UnsupportedOperationException] 
com.gargoylesoftware.htmlunit.ScriptException: CSSRule com.steadystate.css.dom.CSSCharsetRuleImpl is not yet supported. 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:527) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537) 
    ...

所有的依賴和JAR的JSFUnit用使用Maven JBoss的倉庫(http://repository.jboss.com/maven2/)拉。

我們使用以下依存項目:

  • 的jboss-jsfunit核心1.2.0.Final
  • 的jboss-jsfunit,RichFaces的1.2.0.Final
  • RichFaces的-UI 3.3.2.GA
  • openfaces 2.0
  • JSF 1.2_12
  • 的Facelets 1.1.14

在依賴被Maven管理之前,我們能夠很好地運行我們的JSFUnit測試。我能夠通過使用某人放入我們的WEB-INF/lib目錄(來自Maven轉換之前)的ss_css2.jar文件來修復此問題。我希望瞭解是否還有其他方法可以解決Maven中的依賴問題,而不是依靠自己來管理一些依賴關係。

回答

2

你很可能會得到一個「不兼容」版本的HtmlUnit或另一個JAR(可傳遞)。嘗試使用之前使用的版本,並在dependencyManagement部分進行聲明,例如

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>net.sourceforge.htmlunit</groupId> 
     <artifactId>htmlunit</artifactId> 
     <version>2.7</version><!-- put "your" version here --> 
    </dependency> 
    </dependencies> 
</dependencyManagement>  

或者,如果你改變了任何版本,儘量恢復到確切以前的狀態(順便說一下,你能澄清以前的版本和當前使用的一個區別?)。

更新:看來問題是與cssparser工件的版本有關。我沒有所有必要的元素來解決這個問題,但OP的確如此:)

+0

@brianf在某個地方一定有區別。我不知道你是否知道依賴插件,但是你可以用'mvn dependency:tree'打印依賴樹(包括傳遞依賴)。調試類路徑非常有用(也可以在「依賴層次結構」選項卡下的m2eclipse中使用)。 – 2010-04-20 23:19:43

+0

雖然確保所有版本都一樣沒有解決我的問題,但我確實嘗試將cssparser dependency上的版本降低到0.9.4(以前是0.9.5),這似乎解決了我的問題。 – 2010-04-21 14:57:51