Maven打包之解决没有依赖jar包问题及分析

 更新时间:2025年09月15日 08:56:31   作者:刘一说  
用户使用Maven打包FTPServer程序时,因未配置依赖打包导致jar体积过小且运行报错,解决方法是添加maven-assembly插件生成包含依赖的jar包,确保程序正常运行

问题

最近半年多做得项目都是springboot项目,今晚写了个FTPServer小软件,通过Maven打包之后jar文件只有20KB。

通过命令运行后,提示没有指定运行的Main程序。

出现错误信息:java.lang.NoClassDefFoundError 和 ClassNotFoundException。

原因分析

jar文件只有20KB。

明显不对,打开一看里面缺少依赖的jar包。

解决办法

<build>
    <plugins>
        <plugin>
            <!--<groupId>org.apache.maven.plugins</groupId>-->
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin </artifactId>
            <configuration>
                <descriptorRefs>
                <!-- 此处填写打包后jar包后添加的标识 -->
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                    <!-- 此处填写程序的主入口(main方法) -->
                        <mainClass>com.liuyifen.Start.main</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

总结

maven打包时,默认不会将第三方依赖包打进来。可以在pom.xml中添加maven-assembly插件实现… 打出的包里 xxxx-with-dependencies.jar 就是包含依赖包的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot服务正常启动之后,访问服务url无响应问题及解决

    springboot服务正常启动之后,访问服务url无响应问题及解决

    这篇文章主要介绍了springboot服务正常启动之后,访问服务url无响应问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 浅谈MyBatis3 DynamicSql风格语法使用指南

    浅谈MyBatis3 DynamicSql风格语法使用指南

    这篇文章主要介绍了浅谈MyBatis3 DynamicSql风格语法使用指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 如何使用IDEA2022.1 创建Spring Boot项目

    如何使用IDEA2022.1 创建Spring Boot项目

    这篇文章主要介绍了如何使用IDEA2022.1 创建Spring Boot项目,大家在使用idea开发工具时发现给以往的版本略微的不同,细心的小编在此记录下,需要的朋友可以参考下
    2022-08-08
  • 详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    这篇文章主要介绍了详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • SpringBoot ApplicationContext接口深入分析

    SpringBoot ApplicationContext接口深入分析

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2022-11-11
  • Java中this关键字的4种用法详解(附常见面试题)

    Java中this关键字的4种用法详解(附常见面试题)

    在Java的编程世界里,this关键字宛如一把神奇的钥匙,看似简单,却蕴含着强大的功能,这篇文章主要介绍了Java中this关键字的4种用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-06-06
  • Java数据结构之队列示例详解

    Java数据结构之队列示例详解

    队列是一种线性数据结构,它遵循先进先出或后近后出的原则,队列允许在一端插入元素,另一端删除元素,这篇文章主要介绍了Java数据结构之队列的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12
  • 基于mybatis高级映射多对多查询的实现

    基于mybatis高级映射多对多查询的实现

    下面小编就为大家带来一篇基于mybatis高级映射多对多查询的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java的回调机制实例详解

    Java的回调机制实例详解

    这篇文章主要介绍了Java的回调机制,结合实例形式详细分析了java回调机制相关原理、用法及操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Java多种方法实现合并多个list对象列表

    Java多种方法实现合并多个list对象列表

    Java编程中,合并多个列表对象可以通过Stream API或传统循环方式实现,使用Stream API合并时,利用flatMap方法将嵌套的List展平,再通过collect方法收集成一个新的列表,传统循环则通过创建一个空的ArrayList,并通过遍历每个列表将元素添加进去
    2024-09-09

最新评论