【问题标题】:Java - NoClassDefFound error with specified classpathJava - 指定类路径的 NoClassDefFound 错误
【发布时间】:2018-10-26 15:49:37
【问题描述】:

当我尝试运行我的 jar 应用程序时,即使我在类路径中引用了包含该类的库,我也会收到 NoClassDefFoundError。

这是导致它的行(在线程的启动方法中):

Spark.staticFiles.location("/public");

这为 java 的 Spark 框架定义了静态文件的位置,我在“lib”文件夹中有 spark 库。这些库包含在 jar 中: lib package in the jar

我的清单文件如下所示:

清单版本:1.0

类路径:lib/ *

主类:com.xx.xx.xx.Main

据我所知,这应该意味着 lib 中的所有库都包括在内,但是如果我使用简单的 java -jar test.jar 运行 jar,我会得到这个:

Exception in thread "Thread-2" java.lang.NoClassDefFoundError: spark/Spark
    at com.xx.xx.xx.Main.run(TundraWebApp.java:20)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: spark.Spark
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

spark/Spark 是其中一个库的一部分。

为什么没有检测到我的库?

【问题讨论】:

  • 请分享您遇到异常的课程的完整代码,这将有助于其他人更好地了解您的案例并为您提供帮助。

标签: java intellij-idea classpath spark-java


【解决方案1】:

我认为Class-Path 不支持通配符。您必须拼出 jar 名称,例如:

Class-Path: libs/spark-core_2.11-2.3.0.jar libs/spark-sql_2.11-2.3.0.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多