如何将java项目从打包到转为exe文件,再到任意电脑可执行的应用程序(每一步都明确其正确性,请放心查阅)

                                请根据实际情况跳转对应部分

一、将java项目打包为jar,以及遇到的问题

        现在的java项目一般都是使用maven构建的,maven可以通过命令mvn package将项目打成一个jar包,或者在idea中右侧可以快速打包。

        1.1.打包后使用jar -jar报错:java.lang.NoClassDefFoundError(分springboot和非springboot项目)

        原因:注意打包后的文件大小,如果只有几百kb这种的,基本上可以确定有问题了。打包后使用jar -jar运行不起来,原因是只打了一个引用。我们项目中用到的maven依赖里面的jar包,我们是通过pom导入,下载到本地仓库中,但是你打包的时候如果不采取一些措施,他是不会帮你把外部的那些jar包也打到你的项目里面的,你运行起来肯定报一个叫java.lang.NoClassDefFoundError的异常,很简单,找不到你想用的jar包呗,所以你会发现,正常的jar包怎么着也得80多MB,怎么可能几kb。

        解决方法:

                1.如果是springboot工程,很简单,只需要在pom下安装一个插件:spring-boot-maven-plugin,他会帮你把你依赖的jar包给打到你生成的项目jar包里面,如下,复制到pom中:

<build>
    <finalName>***(一般是项目名)</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

idea右侧会多一个插件:此时不管从spring-boot里面打包,还是用mvn的package打包,都可以打出正常大小且可以运行的包。

         2.如果不是springboot程序,那么肯定不能使用spring-boot-maven-plugin插件了。我们需要手动指出,按以下步骤操作:

1.idea中:左上角 文件-》项目结构-》工件(列表第五项),如下

2.点击 “ + ”,选择第一项(jar),第二项(来自具有依赖项的模块),如下

3.这样设置即可,注意要选择一下“主类”,选择你程序的入口,就是main函数。(这就是springboot的好处了,人家能知道你程序的入口位置,所以那个插件才可以帮你完成这一切操作)

4.不出意外你会看到爆出来很多jar包,安全感满满。这些步骤绝对没问题,如果你发生了错误,看看是不是你pom文件、或者项目结构、设置等等没配好,正确jie如下:

5.接下来就可以生成jar包了,注意不要用maven打包了,选择idea-》左上角“构建(build)”-》选择构建工件,最后去上图的“输出目录”位置就可以找到你的jar包了,这个jar包不出意外肯定要大一些了,你可以解压一下这个jar包,会发现里面有了你项目中导入进来的依赖中的jar包文件。

        1.2.java -jar运行jar包出现了“没有主清单属性”问题,其实是缺少“主类”

        解决方法:如果你是springboot项目,加入了spring-boot-maven-plugin插件,那么应该不会出现这个问题,如果出现的话也比较好解决,修改之前配的spring-boot-maven-plugin插件如下:

 <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     <configuration>
          <mainClass>my.xxx.xxx.xxxapplication</mainClass>
          <skip>false</skip>
     </configuration>
     <executions>
         <execution>
             <id>repackage</id>
             <goals>
                 <goal>repackage</goal>
             </goals>
         </execution>
     </executions>
 </plugin>

其实比起问题1.1解决方案里面配置的插件,就是多了一个《mainClass》,翻译过来不就是主类么,就是你的入口文件。

        如果是非springboot项目,一般来说在配置完1.1的解决方法之后也不会出现该问题,因为你在配置工件时已经指定了主类的位置。

如果还不行的话,你可以配置如下插件:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>my.xxx.xxx.xxxapplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

将jar变为可以执行的exe文件,看下一篇文章如何将java项目从打包到转为exe文件,再到任意电脑可执行的应用程序(每一步都明确其正确性,请放心查阅)下半集-CSDN博客

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值