我试图通过Eclipse的Export函数打包一个用Scala编写的简单的可执行Jar。
当试图从cmd java -jar test2.jar
执行Jar时
我得到以下错误。什么好主意吗?谢谢你。
Caused by: java.lang.NoClassDefFoundError: scala/Predef$
at Parser.Test(Parser.scala:5)
at Main.main(Main.java:12)
... 5 more
Caused by: java.lang.ClassNotFoundException: scala.Predef$
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more
您只需要将scala库jar添加到类路径中。
您可以这样做(假设"scala-library.jar" jar在当前目录中):
java -cp scala-library.jar -jar test2.jar
java
命令的文档可以在这里找到:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
对我来说,我使用JDK 11和scala库容器2.12.3,当我改为JDK 8时,它工作得很好这是因为jdk11的scala版本支持JDK兼容
右键单击项目,构建路径,配置构建路径,编辑jdk到小于11
您还可以将scala库打包到您的项目中。看这篇文章
我做了从项目中删除 "Scala库容器"下一步- 添加需要的scala库(scala-library.jar)到Java BuildPath(在Properties for中)作为" add External JARs…"在我的库中(不是作为对scala库的引用)。并将它们全部包含到"Order And Export"最后 - do Export for project with option "Package required libraries into generate JAR"这很好:)
尝试执行:
scala -jar test2.jar
代替:
java -jar test2.jar