为什么我得到java.lang.NoClassDefFoundError,当我试图运行该代码?(Wh

2019-08-07 11:45发布

我要地图了在字符串中的字符,但我得到的运行时错误。

例:

object Hello {
    def hello(c: Char) {
        print(c)
    }

    def main(args: Array[String]) {
        "Hello World!".map(hello)
    }
}

跟踪:

scalac Hello.scala
java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: scala/LowPriorityImplicits
    at Hello.main(Hello.scala)
Caused by: java.lang.ClassNotFoundException: scala.LowPriorityImplicits
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 1 more
make: *** [test] Error 1

Answer 1:

我觉得你的问题是,Scala库是不是在运行时类路径。 您必须手动手动添加。

如果您使用的是像Maven的或SBT工具,也许是依赖被标记为前提,而不是编译。

如果你不使用这些工具,加上“斯卡拉 - library.jar”到您的图书馆目录



Answer 2:

也看到这个问题,因为我没有斯卡拉的正确版本。 对于那些谁使用的是IntelliJ,您可以添加/更改下文件 > 项目结构 > 全球图书馆阶SDK:

如果您编译并运行在命令行项目,请确保您有斯卡拉正确版本的安装了。 例如:

检查安装了斯卡拉版本:

$ scala -version
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL

检查build.sbt有斯卡拉的正确版本:

scalaVersion := "2.11.8"


文章来源: Why do I get java.lang.NoClassDefFoundError when I trying to run this code?