run que pom org java maven maven-3 apache-mina

pom - que es maven java



Maven: NoClassDefFoundError en el hilo principal (2)

Actualmente estoy construyendo una pequeña aplicación de servidor Apache-Mina. Estoy usando Maven para construirlo. Cuando intento ejecutar el archivo jar, aparece el siguiente error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/mina/filter/codec/ProtocolCodecFactory Caused by: java.lang.ClassNotFoundException: org.apache.mina.filter.codec.Protoc olCodecFactory at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: de.fr1zle.gpsserver.GpsServer. Program will exit.

Correr en eclipse no es un problema.

Así es como se ve el MANIFIESTO generado:

Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven Built-By: fr1zle Build-Jdk: 1.6.0_23 Main-Class: de.fr1zle.gpsserver.GpsServer Class-Path: commons-lang-2.1.jar plexus-utils-1.1.jar junit-4.8.2.jar log4j-1.2.14.jar slf4j-jdk14-1.5.11.jar slf4j-api-1.5.11.jar antlr-2. 7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar hibernate-commons -annotations-3.2.0.Final.jar hibernate-jpa-2.0-api-1.0.0.Final.jar jt a-1.1.jar hibernate-annotations-3.5.6-Final.jar hibernate-core-3.5.6- Final.jar mysql-connector-java-5.1.15.jar mina-core-2.0.3.jar

Y esta es (parte de) mi pom.xml:

<groupId>de.fr1zle.gpsserver</groupId> <artifactId>GPSServer</artifactId> <version>0.0.1-SNAPSHOT</version> <name>GPSServer</name> <packaging>jar</packaging> <description>Tracks location of GPS modules and the information they submit.</description> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>de.fr1zle.gpsserver.GpsServer</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>

¿Qué estoy haciendo mal aquí?


Cuando ejecuta desde Eclipse, Eclipse configura la ruta de clase para usted. Por lo tanto, no te encuentras con este problema.

Cuando se ejecuta fuera de Eclipse, debe configurar CLASSPATH proporcionando la ruta a estos archivos jar, es decir, el file:/dev/libs/mina-core-2.0.3.jar en el MANIFEST.MF o agregando el Opción -cp al ejecutar la aplicación. No olvide que las entradas en la ruta de clase en el archivo de manifiesto son relativas al JAR en el que están incrustadas o la ruta absoluta a un directorio de archivos local.

Su otra opción es empaquetarlo como un frasco utilizando el complemento de ensamblaje de maven jar-with-dependencies .


Otra opción es usar el complemento dependiente de maven. Puede copiar todas las bibliotecas dependientes a una carpeta como lib, y usarlas para classpath.

Para copiar dependencias:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin>

y para el classpath, aquí classpathPrefix especifica que todas las dependencias deben estar ubicadas en una carpeta "lib" relativa al archivo.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.citusdata.hadoop.HadoopTest</mainClass> </manifest> </archive> </configuration> </plugin>

Para mayor información:

http://www.ibm.com/developerworks/java/library/j-5things13/index.html http://maven.apache.org/plugins/maven-dependency-plugin/usage.html