java - Generate a jar for maven -
this question has answer here:
so created standalone app , generates jar. when run eclipse works, "run as" -> java application.
when try run console started problems swt, added manifest swt.jar , started problems next dependency on pom.
here example of pom.xml swt.jar
manifest-version: 1.0 main-class: mapper.osm.main.main class-path: swt.jar i downloaded swt , copied on same folder of jar. dont want add libraries manually manifest. feels there should easier, more maven way this.
this error got after adding swt
$ java -jar mapper.jar java.lang.noclassdeffounderror: org/opengis/geometry/coordinate/position @ java.lang.class.getdeclaredmethods0(native method) @ java.lang.class.privategetdeclaredmethods(unknown source) @ java.lang.class.privategetmethodrecursive(unknown source) @ java.lang.class.getmethod0(unknown source) @ java.lang.class.getmethod(unknown source) @ sun.launcher.launcherhelper.validatemainclass(unknown source) @ sun.launcher.launcherhelper.checkandloadmain(unknown source) caused by: java.lang.classnotfoundexception: org.opengis.geometry.coordinate.position @ java.net.urlclassloader.findclass(unknown source) @ java.lang.classloader.loadclass(unknown source) @ sun.misc.launcher$appclassloader.loadclass(unknown source) @ java.lang.classloader.loadclass(unknown source) ... 7 more error: jni error has occurred, please check installation , try again exception in thread "main" before same swt graphical libraries. 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>mapper</groupid> <artifactid>mapper.osm</artifactid> <version>0.0.1-snapshot</version> <packaging>jar</packaging> <name>mapper,osm</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <geotools.version>13.2</geotools.version> </properties> <dependencies> <!-- eclipse's jface extensions --> <dependency> <groupid>org.eclipse.ui</groupid> <artifactid>org.eclipse.ui.workbench</artifactid> <version>3.7.1.v20120104-1859</version> </dependency> <!-- swt --> <dependency> <groupid>org.eclipse.swt</groupid> <artifactid>${swt.artifactid}</artifactid> <version>4.4</version> <scope>compile</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupid>org.geotools</groupid> <artifactid>gt-shapefile</artifactid> <version>${geotools.version}</version> </dependency> <dependency> <groupid>org.geotools</groupid> <artifactid>gt-swing</artifactid> <version>${geotools.version}</version> </dependency> <dependency> <groupid>com.vividsolutions</groupid> <artifactid>jts</artifactid> <version>1.12</version> </dependency> <dependency> <groupid>joda-time</groupid> <artifactid>joda-time</artifactid> <version>2.8.2</version> </dependency> <dependency> <groupid>commons-io</groupid> <artifactid>commons-io</artifactid> <version>2.4</version> </dependency> <!-- rxtx --> <dependency> <groupid>org.bidib.jbidib.org.qbang.rxtx</groupid> <artifactid>rxtxcomm</artifactid> <version>2.2</version> </dependency> <dependency> <groupid>com.itextpdf</groupid> <artifactid>itextpdf</artifactid> <version>5.5.8</version> </dependency> <dependency> <groupid>xerces</groupid> <artifactid>xercesimpl</artifactid> <version>2.11.0</version> </dependency> <!-- instalador izpack --> <dependency> <groupid>org.codehaus.izpack</groupid> <artifactid>izpack-maven-plugin</artifactid> <version>5.0.6</version> <scope>provided</scope> </dependency> </dependencies> <repositories> <repository> <id>swt-repo</id> <url>https://swt-repo.googlecode.com/svn/repo/</url> </repository> <repository> <id>maven2-repository.dev.java.net</id> <name>java.net repository</name> <url>http://download.java.net/maven/2</url> </repository> <repository> <id>osgeo</id> <name>open source geospatial foundation repository</name> <url>http://download.osgeo.org/webdav/geotools/</url> </repository> </repositories> <build> <finalname>mapper</finalname> <plugins> <plugin> <!-- build executable jar --> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jar-plugin</artifactid> <version>2.6</version> <configuration> <archive> <manifest> <mainclass>mapper.osm.main.main</mainclass> </manifest> </archive> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>utf-8</encoding> </configuration> </plugin> <plugin> <groupid>com.zenjava</groupid> <artifactid>javafx-maven-plugin</artifactid> <version>2.0</version> <configuration> <mainclass>org.korecky.myjavafx.app</mainclass> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>unix-amd64</id> <activation> <os> <family>unix</family> <arch>amd64</arch> </os> </activation> <properties> <swt.artifactid>org.eclipse.swt.gtk.linux.x86_64</swt.artifactid> </properties> </profile> <profile> <id>windows-x86</id> <activation> <os> <family>windows</family> <arch>x86</arch> </os> </activation> <properties> <swt.artifactid>org.eclipse.swt.win32.win32.x86</swt.artifactid> </properties> </profile> <profile> <id>windows64</id> <activation> <os> <family>dos</family> <arch>amd64</arch> </os> </activation> <properties> <swt.artifactid>org.eclipse.swt.win32.win32.x86_64</swt.artifactid> </properties> </profile> <profile> <id>windows-x86_64</id> <activation> <os> <family>windows</family> <arch>x86_64</arch> </os> </activation> <properties> <swt.artifactid>org.eclipse.swt.win32.win32.x86_64</swt.artifactid> </properties> </profile> <profile> <id>macosx-x86</id> <activation> <os> <family>mac</family> <arch>x86</arch> </os> </activation> <properties> <swt.artifactid>org.eclipse.swt.cocoa.macosx</swt.artifactid> </properties> </profile> <profile> <id>macosx-x86_64</id> <activation> <os> <family>mac</family> <arch>x86_64</arch> </os> </activation> <properties> <swt.artifactid>org.eclipse.swt.cocoa.macosx.x86_64</swt.artifactid> </properties> </profile> </profiles> </project>
try using maven dependency plugin copy jars, , maven jar plugin "addclasspath" node add dependencies manifest:
<plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-dependency-plugin</artifactid> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputdirectory>${project.build.directory}/lib</outputdirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jar-plugin</artifactid> <configuration> <archive> <manifest> <addclasspath>true</addclasspath> <classpathprefix>lib</classpathprefix> <mainclass>my.test.app</mainclass> </manifest> </archive> </configuration> </plugin> this copy jars target/lib , add them manifest prefix lib/
Comments
Post a Comment