我有一些简单的问题(虽然对我来说太难了):
我正在尝试使用 gradle 构建一个简单的 Scala 测试程序,该程序具有 Java 库依赖项。我的测试程序如下
src/main/scala/test.scala
import org.ejml.simple.SimpleMatrix
object test {
def main(args: Array[String]): Unit = {
val M = new SimpleMatrix(2,2)
println("Created matrix succesfully")
}
}
我的 build.gradle 看起来像这样:
apply plugin: 'scala'
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.ejml', name: 'all', version: '0.30'
compile 'org.scala-lang:scala-library:2.12.0'
}
当我用
./gradlew clean assemble
我得到了正确的文件夹结构(build/classes/main/test.class)。
如果我现在尝试运行 test.class
scala test
我收到以下错误:
java.lang.ClassNotFoundException: org.ejml.simple.SimpleMatrix
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at test$.main(test.scala:7)
at test.main(test.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at scala.reflect.internal.util.ScalaClassLoader.$anonfun$run$2(ScalaClassLoader.scala:98)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:32)
at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:98)
at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:90)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:129)
at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:65)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:92)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:108)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
所以似乎 EJML 没有正确链接。看起来我忽略了一些东西,但我想不出是什么。我确认已下载 EJML 库
$ ls ~/.gradle/caches/modules-2/files-2.1/org.ejml/
all core dense64 denseC64 equation simple
如果我使用 Eclipse 并将 .jars 手动添加到项目中,该程序也可以正常构建
我过去使用相同的过程成功地使用 gradle 构建了 java 项目(虽然已经有几年了)。任何帮助表示赞赏。
PS。只是为了澄清,我正在尝试使用命令行进行构建。如果我手动添加 JAR,Eclipse(和其他 IDE)工作正常
聚苯乙烯。程序运行到“val M = ...”行(已测试)