2014-10-05 4 views
1

Я сделал небольшой образец проекта, чтобы проверить все и наткнулся на то, что я нашел странным. Я создал новый проект Maven в Eclipse с некоторым кодом, который крутится в файлах XML с помощью Dom4J. Она работает прекрасно до тех пор, как я только запустить приложение из жгутов Eclipse, однако, когда я хочу, чтобы начать флягу, что Maven упакованное для меня я получаю эту ошибку:Проект запускается в Eclipse, но не из командной строки: java.lang.NoClassDefFoundError с 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?