2014-10-05 10 views
1

작은 샘플 프로젝트를 테스트하여 이상한 것을 발견했습니다. DOM4J를 사용하여 XML 파일을 둘러싼 몇 가지 코드로 Eclipse에서 새로운 Maven 프로젝트를 만들었습니다. 난 단지 내가이 오류가 나를 위해 포장 받는다는 항아리 시작할 그러나 때, withing에 이클립스에서 앱을 시작하면 그만큼 잘 실행 :프로젝트는 Eclipse에서 실행되지만 명령 행에서는 실행되지 않습니다. java.lang.NoClassDefFoundError with Maven 및 Dom4J

avalon% java -jar target/avalon.launcher-0.0.1-SNAPSHOT.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2688) 
    at java.lang.Class.privateGetMethodRecursive(Class.java:3035) 
    at java.lang.Class.getMethod0(Class.java:3005) 
    at java.lang.Class.getMethod(Class.java:1771) 
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

내 설정에 문제가 있어야합니다. 다음은 내 pom.xml입니다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>de.oliverconzen</groupId> 
    <artifactId>avalon.launcher</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>avalon</name> 
    <description>Simple cli based game written in Java</description> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>jaxen</groupId> 
     <artifactId>jaxen</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <archive> 
      <manifest> 
       <mainClass>de.oliverconzen.avalon.launcher.App</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

대단히 고마워요!

답변

1

물론 내가 게시 한 후 두 번째 대답을 찾았습니다. 종속성은 실행을 위해 번들되지 않습니다. 번들로 제공되지 않으면 종속성 항아리가 동일한 폴더 (?)에 있어야합니다.

How can I create an executable JAR with dependencies using Maven?

:

어쨌든,이 절 도와 줬어요