Как поместить все необходимые файлы JAR в папку библиотеки внутри окончательного файла JAR с помощью Maven?

Я использую 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
            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.

Как я могу исправить это исключение?

95
задан Community 23 May 2017 в 12:02
поделиться