当我尝试运行我的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是其中一个库的一部分。
为什么没有检测到我的库?
答案 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