Chris Maness
Chris Maness

Reputation: 1686

Building a maven project for deployment

Hello all I'm pretty new to using maven to build Java project so I'm sure the solution to my problem will be quite easy. I have installed the Eclipse Maven plugin and created a maven project. I now wish to package this project and distribute it as a runnable jar file. However when I run

mvn package

and then try to run the jar file I get the following error:

 Exception in thread "main" java.lang.NoClassDefFoundError: main/Formatter

The pom for this particular file looks like so:

<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>GROUP</groupId>
<artifactId>pcap.csv.xml</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
     <dependency>
        <groupId>net.sf.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>2.0</version>
    </dependency>
  </dependencies>
</project>

Any help would be greatly appreciated.

Upvotes: 0

Views: 93

Answers (1)

Dave Newton
Dave Newton

Reputation: 160321

You need to specify the main class in the jar plugin:

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <mainClass>main.Formatter</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
</plugins>
</build>

If you want to distribute a single jar you need to use a single-jarifier (fatjar, jarjar, onejar, etc.)

Upvotes: 2

Related Questions