运行.JAR文件的Maven声明缺少依赖项

2022-01-28 13:56:26 标签 javamavenjackson

我有一个Maven项目,它使用了一些外部依赖项,主要是Jackson。

当我运行mvn clean -e install it creates文件中指定的jar文件target directory. However when I run this jar fil目录中。然而,当我运行这个jar文件与java在命令行,我得到错误消息:

Error: Unable to initialize main class com.test.package.Main
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException

错误消息会指出代码首先使用的Jackson的哪个部分,但是Jackson的特定元素并不重要。奇怪的是,当我在IntelliJ中运行项目时,它运行得很好。JAR文件似乎无法访问适当的依赖项。

这是pma 。xml的相关部分:

  <dependencies>
     <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>${guava.version}</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <archive>
              <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>com.test.package.Main</mainClass>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.0</version>
          <inherited>true</inherited>
          <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
            <compilerArgument>-Xlint:unchecked</compilerArgument>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

为了使构建的JAR文件在任何地方正常运行,我应该做什么?

# # #解决:

这个来自另一个线程的解决方案解决了我的问题:https://stackoverflow。com/a/42231035/8402030

我必须添加一个名为Maven Shade的插件,它创建了一个包含所有依赖项的优步jar。另外,必须从标签中移除插件。

不完全确定为什么插件在外面很重要。如果有人知道反馈将感激。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码