微服务项目打包运行的过程,解决各种Exception

本文介绍了如何确保IDEA使用UTF-8编码,并配置Maven子模块的pom.xml以避免编码异常。内容包括设置maven.compiler.source和target属性,确保project.build.sourceEncoding等相关编码属性为UTF-8,以及解决打包后找不到主清单的异常。此外,还提供了两种打包方式:通过命令行执行mvn clean install和在IDEA中操作。最后,强调了执行jar时需要指定-Dfile.encoding=UTF-8参数以防止字符集问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,首先保证 idea 的文件编码全是 UTF-8

在这里插入图片描述

二,每个子模块的 pom :

properties 标签要包含:

<properties>
       <!-- 根据你的 java 版本选择 -->
       <maven.compiler.source>11</maven.compiler.source>
       <maven.compiler.target>11</maven.compiler.target>
       <!-- 一定包含这 3 项 -->
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
       <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

以上是为了防止 微服务项目 读取 nacos 等配置中心的配置文件时,或者 xml 日志配置文件时, 抛出 文件格式编码 的异常;

然后在 pom 的末尾,加上 build 标签里的内容:

<dependencies>
 	........
</dependencies>

<build>
        <finalName>order-service</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>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

这是为了解决 打包后,java -jar 时找不到 主清单的异常;

但这里特别提醒,如果你的子模块没有启动类,而是一些 抽离出的公共的类,比如 entity 实体公共类、公共的工具类 等等,你需要把上述代码中的 executions 标签及其子标签都干掉,因为你不需要启动类,否则打包会提示你找不到启动类;

三,打包

第一种方式:对每个子模块,执行 mvn clean install
在这里插入图片描述

注意,最好先 clean,不然你也不知道有些地方是否被覆盖

第二种方式:打开 idea 右侧按钮,在父工程下,lifecycle 下点 package

在这里插入图片描述

四,执行 jar

比如:nohup java -Dfile.encoding=UTF-8 -jar order-service-0.0.1-SNAPSHOT.jar &

这里的 nohup 是为了防止命令行窗口关闭程序被终止,&是为了后台运行,而 -Dfile.encoding=UTF-8 也必须加上,否则程序内部的一些配置文件仍然可能报关于中文字符集的异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值