Home  >  Article  >  Java  >  Why do I get a `NoClassDefFoundError` for Maven dependencies when running my application outside of Eclipse?

Why do I get a `NoClassDefFoundError` for Maven dependencies when running my application outside of Eclipse?

Linda Hamilton
Linda HamiltonOriginal
2024-10-25 08:44:29414browse

Why do I get a `NoClassDefFoundError` for Maven dependencies when running my application outside of Eclipse?

NoClassDefFoundError on Maven dependency

When integrating Maven dependencies into a project, it's essential to address potential dependency resolution issues. One common problem is encountering a 'NoClassDefFoundError' when running an application outside of Eclipse.

Understanding the Issue

The 'NoClassDefFoundError' occurs when the Java Virtual Machine (JVM) fails to locate the bytecode definition of a class referenced in a running program. This can happen when the class is not available on the specified classpath during runtime.

In the case described, the error is caused by missing class definitions from the Jackson library, even though those dependencies were declared in the POM file. This indicates that the dependencies were successfully downloaded and built, but they are not being included in the packaged JAR file.

Solving the Problem with Maven-Shade-Plugin

Maven doesn't automatically include dependencies in the JAR file it generates. To resolve this issue, consider using the maven-shade-plugin. This plugin allows you to "shade" library code into the output JAR file.

Step 1: Register the Maven-Shade-Plugin

Add the following to your POM file to register the maven-shade-plugin:

<code class="xml"><plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.5.2</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
    </execution>
  </executions>
</plugin></code>

Step 2: Rerun Maven

Re-execute the following commands after registering the plugin:

$ mvn package
$ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App

This should resolve the 'NoClassDefFoundError' and allow the application to run successfully from the command line.

Further Configuration

The maven-shade-plugin offers advanced configuration options for fine-tuning dependency inclusion, specifying the Main-Class for an executable JAR file, and more. Refer to the plugin's official documentation for more details.

The above is the detailed content of Why do I get a `NoClassDefFoundError` for Maven dependencies when running my application outside of Eclipse?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn