Java - ошибка NoClassDefFound с указанным путем к классу - PullRequest
0 голосов
/ 16 мая 2018

Когда я пытаюсь запустить свое jar-приложение, я получаю NoClassDefFoundError, даже если я ссылаюсь на библиотеку, содержащую класс, в моем classpath.

Это строка, вызывающая его (в методе start потока):

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

Это определяет расположение статических файлов для платформы Spark для Java, и у меня есть библиотека spark в папке "lib".Библиотеки включены в пакет jar: lib в jar

Мой файл манифеста выглядит так:

Manifest-Version: 1.0

Путь к классу: lib / *

Основной класс: com.xx.xx.xx.Main

ThisНасколько я знаю, это означает, что все библиотеки в lib включены, но если я запускаю jar с простым java -jar test.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 голосов
/ 16 мая 2018

Я не думаю, что Class-Path поддерживает подстановочные знаки. Вы должны были бы прописать имена банок, например ::1002

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