Java - 指定类路径的NoClassDefFound错误

时间:2018-05-16 14:20:33

标签: java intellij-idea classpath spark-java

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

这是引起它的行(在线程的start方法中):

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

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

我的清单文件如下:

清单 - 版本:1.0

Class-Path:lib / *

Main-Class: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是其中一个库的一部分。

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

1 个答案:

答案 0 :(得分:0)

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

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