Maven生成一个可以直接运行的jar包

今天在学习的过程中遇到一个问题调试了好久,最终解决了。来记录一下。
问题描述:一个普通的javase的程序,使用maven构建。最终项目完成后使用IDE(我用的是IDEA)可以运行,但是生成的jar包没办法直接java -jar通过命令行运行。
原因:maven自带的package插件生成的jar包是不带依赖包的,可以通过解压缩软件打开它生成的默认jar包,发现它只有pom.xml文件,而没有真正的依赖包。所以问题就是java -jar命令找不到依赖包中的类,所以报ClassNotFoundException。
解决的办法:
在pom.xml文件中的插件部分加入下面的插件

<plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <mainClass>*****</mainClass>
              </manifest>
            </archive>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
        </plugin>

这里的<mainClass>*****</mainClass>中填入运行的主类的全限定名(包+类)。
然后要通过命令行运行:mvn assembly:assembly 之前一直使用IDEA自带的package插件直接打包,发现每次生成的还是默认的jar包。所以一定要用命令行自己输入。会发现在target文件中会生成两个文件,其中一个以jar-with-dependencies为后缀的就是完整包含依赖包的jar包,可以直接通过命令行的java -jar运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值