Wie konfiguriere ich Buildr, um ScalaTest 2.11 auszuführen? - Rubin, Scala, Rechen, Scalatest, Buildr

Ich benutze Buildr 1.4.20 (mit Ruby 2.0.0 auf 64-Bit Linux) und versuche ScalaTest mit Scala 2.11.2 zu benutzen, aber ich bekomme folgendes ClassNotFoundException Jedes Mal wenn ich versuche zu rennen buildr test.

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

Natürlich dachte ich, ich könnte das beheben, indem ich eine Abhängigkeit hinzufüge scala.xml.MetaData darin, fügte ich hinzu "org.scala-lang.modules: scala-xml_2.11: jar: 1.0.2" zu meinem Test Classpath, aber ich bekomme immer noch den gleichen Fehler.

Ich bin sicher, dass die Klasse tatsächlich in der .jar-Datei vorhanden ist:

[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

... also kann ich das nur vermuten test.with Es ist nicht der richtige Weg, diese Abhängigkeit in einem Scala-Projekt hinzuzufügen. Kann jemand bitte einen Rat geben, wie man das beheben kann?

Mein gesamtes Buildfile ist wie folgt:

# 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

Antworten:

0 für die Antwort № 1

Dein Buildfile ist in Ordnung, das scheint ein Problem mit buildr zu sein.

Um das Problem zu umgehen, könnten Sie scala-xml wie folgt in die ant-Abhängigkeiten einfügen:

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

Sie sollten auch einen Bug im buildrs Repository ausgeben.


Am beliebtesten