ClassNotFoundException:scala.PreDef$ 问题
Posted
技术标签:
【中文标题】ClassNotFoundException:scala.PreDef$ 问题【英文标题】:ClassNotFoundException:scala.PreDef$ issue 【发布时间】:2013-05-25 04:22:11 【问题描述】:我正在尝试通过 Eclipse 的导出功能打包一个用 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
【问题讨论】:
【参考方案1】:您只需要将 scala 库 jar 添加到类路径。
你可以这样做(假设“scala-library.jar”jar 在当前目录中):
java -cp scala-library.jar -jar test2.jar
java
comamnd 的文档可以在这里找到:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
【讨论】:
感谢您的回复。你能告诉我怎么做吗?我是 Scala、Java 和 Eclipse 的新手。 通过 Eclipse 将 Scala 库添加到类路径:右键单击您的项目 -> 构建路径 -> 配置构建路径 -> 库 -> 添加库 -> 选择 Scala 库 Somewhy for mejava -Dscala.usejavacp=true -cp scala-library.jar -jar test2.jar
不起作用(产生与作者指定的错误消息类似的错误消息),但 java -Dscala.usejavacp=true -cp scala-library.jar:test2.jar Main
起作用。任何想法为什么? (我实际上是在玩dotty(不是用主线Scala),我的JAR是由sbt new lampepfl/dotty.g8; cd …; sbt package
(不是由Eclipse IDE的Export)生成的,但我怀疑它是否重要,因为我无论如何都需要scala-library.jar并且它成功了以粗体表示命令。)【参考方案2】:
对我来说,我使用的是 jdk 11 和 scala 库容器 2.12.3,当我更改为 jdk 8 时它工作正常 这是因为 jdk11 scala 版本支持 JDK Compatibility
右键项目,构建路径,配置构建路径,编辑你的jdk到小于11
【讨论】:
【参考方案3】:您还可以将 scala 库与您的项目打包在一起。见this帖子
【讨论】:
【参考方案4】:我从项目中删除了“Scala 库容器”。 下一步 - 添加 需要 scala 的库 (scala-library.jar) 到 Java BuildPath(在 Properties for )作为 my 库中的“Add External JARs...”(不是对 scala lib 的引用)。并将它们全部包含在“Order and Export”中 最后 - 使用选项“将所需库打包到生成 JAR”为项目执行 导出 这很好用:)
【讨论】:
以上是关于ClassNotFoundException:scala.PreDef$ 问题的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.ClassNotFoundException 运行 jar 文件时 Spring Boot 中的 java.lang.ClassNotFoundException - 添加库
ClassNotFoundException:org.sqlite.JDBC
ClassNotFoundException和NoClassDefFoundError
ClassNotFoundException和NoClassDefFoundError