2014-10-20 57 views
4

我正在使用Buildr 1.4.20(在64位Linux上使用Ruby 2.0.0),並試圖在Scala 2.11.2上使用ScalaTest,但每次嘗試運行buildr test時都會收到以下ClassNotFoundException如何配置Buildr運行ScalaTest 2.11?

Running tests in MyProject 
ScalaTest "MySimpleTest" 
An exception or error caused a run to abort. This may have been caused by a problematic custom reporter. 
java.lang.NoClassDefFoundError: scala/xml/MetaData 
    at org.scalatest.tools.ReporterFactory.createJunitXmlReporter(ReporterFactory.scala:209) 
    at org.scalatest.tools.ReporterFactory.getReporterFromConfiguration(ReporterFactory.scala:230) 
    at org.scalatest.tools.ReporterFactory$$anonfun$createReportersFromConfigurations$1.apply(ReporterFactory.scala:242) 
    at org.scalatest.tools.ReporterFactory$$anonfun$createReportersFromConfigurations$1.apply(ReporterFactory.scala:241) 
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) 
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:743) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1177) 
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 
    at org.scalatest.tools.ReporterConfigurations.foreach(ReporterConfiguration.scala:43) 
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245) 
    at org.scalatest.tools.ReporterConfigurations.map(ReporterConfiguration.scala:43) 
    at org.scalatest.tools.ReporterFactory.createReportersFromConfigurations(ReporterFactory.scala:241) 
    at org.scalatest.tools.ReporterFactory.getDispatchReporter(ReporterFactory.scala:245) 
    at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2720) 
    at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043) 
    at org.scalatest.tools.Runner$.run(Runner.scala:883) 
    at org.scalatest.tools.ScalaTestAntTask.execute(ScalaTestAntTask.scala:329) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
Caused by: java.lang.ClassNotFoundException: scala.xml.MetaData 
    at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1365) 
    at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315) 
    at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 19 more 

當然,我想我可以通過添加在它scala.xml.MetaData依賴解決這個問題,所以我說「org.scala-lang.modules:斯卡拉-xml_2.11:罐子:1.0.2」到我的測試類路徑,但我仍然得到相同的錯誤。

我敢肯定,這個類是確實存在的.jar文件:

[email protected]:~> zipinfo ~/.m2/repository/org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar | grep MetaData 
-rw----  2.0 fat  1441 bl defN 14-May-20 10:09 scala/xml/MetaData$$anonfun$asAttrMap$1.class 
-rw----  2.0 fat  1312 bl defN 14-May-20 10:09 scala/xml/MetaData$$anonfun$toString$1.class 
-rw----  2.0 fat  1215 bl defN 14-May-20 10:09 scala/xml/MetaData$$anonfun$toString1$1.class 
-rw----  2.0 fat  4197 bl defN 14-May-20 10:09 scala/xml/MetaData$.class 
-rw----  2.0 fat 10489 bl defN 14-May-20 10:09 scala/xml/MetaData.class 

...所以我只能假設,test.with是不是要加在斯卡拉項目這種依賴關係的正確方法。任何人都可以請提供任何建議如何解決這個問題?

我的整個構建文件如下:

# enable Scala 2.11.2 
Buildr.settings.build['scala.version'] = "2.11.2" 
Buildr.settings.build['scala.test'] = 'org.scalatest:scalatest_2.11:jar:2.2.2' 
Buildr.settings.build['scala.check'] = 'org.scalacheck:scalacheck_2.11:jar:1.11.6' 
require 'buildr/scala' 

VERSION_NUMBER = "1.0-SNAPSHOT" 
GROUP = "..." 
COPYRIGHT = "..." 

repositories.remote << "http://repo1.maven.org/maven2" 

DEPS_COMPILE = "javax.servlet:javax.servlet-api:jar:3.1.0" 

desc "..." 
define "MyProject" do 
    project.version = VERSION_NUMBER 
    project.group = GROUP 
    manifest["Implementation-Vendor"] = COPYRIGHT 

    compile.with DEPS_COMPILE 

    test.with "org.scala-lang.modules:scala-xml_2.11:jar:1.0.2" 
end 

回答

0

你的構建文件是確定的,這似乎是一個buildr問題。

作爲一種變通方法,您可以添加斯卡拉-XML在螞蟻的依賴,就像這樣:

VERSION_NUMBER = "1.0-SNAPSHOT" 
GROUP = "..." 
COPYRIGHT = "..." 
Ant.dependencies << "org.scala-lang.modules:scala-xml_2.11:jar:1.0.2" 

你也應該發出的buildr的存儲庫中的錯誤。

+0

感謝您的回答 - 我會在適當的時候與此一起去看看它是否有效。 – ATG 2015-05-27 10:47:12