i creating maven project scratch, first learn how use maven. main project contains no source code file, has 2 modules (app, , util). app depends on util. have .jar app, , have no manifest file if possible. able compile whole project mvn clean install, can not run app console.
the main project .pom is
<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>com.proba</groupid> <artifactid>myproject</artifactid> <version>0.0.1</version> <packaging>pom</packaging> <modules> <module>util</module> <module>app</module> </modules> </project>
util .pom is
<?xml version="1.0"?> <project xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <modelversion>4.0.0</modelversion> <parent> <groupid>com.proba</groupid> <artifactid>myproject</artifactid> <version>0.0.1</version> </parent> <artifactid>util</artifactid> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
app pom is
<?xml version="1.0"?> <project xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <modelversion>4.0.0</modelversion> <parent> <groupid>com.proba</groupid> <artifactid>myproject</artifactid> <version>0.0.1</version> </parent> <artifactid>app</artifactid> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupid>com.proba</groupid> <artifactid>util</artifactid> <version>0.0.1</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jar-plugin</artifactid> <version>2.4</version> <configuration> <archive> <manifest> <mainclass>com.proba.app.app</mainclass> <addclasspath>true</addclasspath> </manifest> </archive> </configuration> </plugin> <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>exec-maven-plugin</artifactid> <version>1.1.1</version> <executions> <execution> <phase>site-deploy</phase> <goals> <goal>java</goal> </goals> <configuration> <mainclass>com.proba.app.app</mainclass> <!--<arguments> <argument>myarg1</argument> <argument>myarg2</argument> </arguments> --> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
the code doesn't much. app.java (that inside app module) package com.proba.app;
import com.proba.util.utilclass; public class app { public static void main( string[] args ) { system.out.println( "hello world!" ); utilclass uc = new utilclass(); system.out.println( "qqqqq: " + uc.print() ); } }
i compile with
mvn clean install [info] reactor summary: [info] [info] myproject .......................................... success [ 0.406 s] [info] util ............................................... success [ 2.074 s] [info] app ................................................ success [ 0.535 s] [info] ------------------------------------------------------------------------ [info] build success [info] ------------------------------------------------------------------------
myproject, util, app success.
i try run with
java -jar app/target/app-0.0.1.jar hello world! exception in thread "main" java.lang.noclassdeffounderror: com/proba/util/utilclass @ com.proba.app.app.main(app.java:17) caused by: java.lang.classnotfoundexception: com.proba.util.utilclass @ java.net.urlclassloader.findclass(urlclassloader.java:381) @ java.lang.classloader.loadclass(classloader.java:424) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:331) @ java.lang.classloader.loadclass(classloader.java:357) ... 1 more
as can see, hello world! printed out, utilclass not found. able run build eclipse, not console. doing wrong? have idea?
what missing jar of utilclass. need add shade plugin in pom. reference: maven-shade-plugin
Comments
Post a Comment