【问题标题】:ClassNotFoundException / NoClassDefFoundError when running a Scala jar运行 Scala jar 时出现 ClassNotFoundException / NoClassDefFoundError
【发布时间】:2013-04-26 17:57:25
【问题描述】:

使用 Eclipse 将 Scala 项目导出到 .jar,以 java -jar app.jar 开头的应用程序因错误 java.lang.ClassNotFoundException: scala.Predef$ 而死。

完整输出:

Exception in Application start method
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:490)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:829)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:150)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NoClassDefFoundError: scala/Predef$
    at main.App$.debug(App.scala:69)
    at main.App.start(App.scala:23)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:772)
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:260)
    at com.sun.javafx.application.PlatformImpl$5$1.run(PlatformImpl.java:223)
    at com.sun.javafx.application.PlatformImpl$5$1.run(PlatformImpl.java:220)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:220)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:94)
Caused by: java.lang.ClassNotFoundException: scala.Predef$
    at java.net.URLClassLoader$1.run(URLClassLoader.java:365)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:353)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:422)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:355)
    ... 9 more

引用行at main.App$.debug(App.scala:69)

object App {
//...
    def debug(s: String) {
        println("DEB: "+s)
    }
// ... 
}

这似乎是因为 Scala 库不包含在 jar 中。我该如何解决这个问题?

我已阅读有关使用 maven 插件的解决方案,但我更喜欢手动选项。

【问题讨论】:

    标签: scala jar jvm


    【解决方案1】:

    手动将库推送到 jar 中.. 或者您可以选择编写脚本

    【讨论】:

    • 解压scala-library.jar(即文件夹scala)的内容并将其添加到应用程序jar的根目录是解决方案,非常感谢。
    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2013-05-19
    相关资源
    最近更新 更多