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 me java -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

ClassNotFoundException:oracle.jdbc.driver.OracleDriver

如何解决 ClassNotFoundException?