Я использую Maven в своем автономном приложении и хочу упаковать все зависимости в моем файле JAR в папку библиотеки, как указано в одном из ответов здесь:
Как я могу создать исполняемый файл JAR с зависимостями, используя Maven?
Я хочу, чтобы мой окончательный файл JAR имел папку библиотеки, содержащую зависимости в виде файлов JAR, а не то, что maven-shade-plugin
помещает зависимости в виде папок, таких как иерархия Maven, в папку.m2.
Ну, на самом деле текущая конфигурация делает то, что я хочу, но у меня проблема с загрузкой файлов JAR при запуске приложения. Не могу загрузить классы.
Вот моя конфигурация:
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
prepare-package
copy-dependencies
${project.build.directory}/classes/lib
false
false
true
org.apache.maven.plugins
maven-jar-plugin
true
lib/
com.myapp.MainClass
org.apache.maven.plugins
maven-compiler-plugin
1.6
org.apache.maven.plugins
maven-dependency-plugin
install
install
sources
org.apache.maven.plugins
maven-resources-plugin
2.5
UTF-8
Проект отлично работает из Eclipse, и файлы JAR помещаются в папку библиотеки внутри моего окончательного файла JAR, как я хочу, но при запуске окончательного файла JAR из целевой папки я всегда получаюClassNotFoundException
:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
Could not find the main class: com.myapp.MainClass. Program will exit.
Как я могу исправить это исключение?