SpringBoot项目部署问题

SpringBoot项目部署问题

​ 在使用SpringCloud构建项目时,后期难免会想将开发好的项目部署上去,以下即演示和记录部署时遇到的错误。

关于项目打包问题:

​ 使用maven构建项目,在idea中有提示按钮,选中package即可将Springboot项目打包成jar包,如有父工程做依赖控制,即可直接在父工程进行package即后所有子项目也都会打包。

pom.xml配置问题

​ 打包必不可少的就是配置文件,如果pom中没有配置好,就算打包好后,启动都会有各种千奇百怪的错误。在pom.xml中,可配置我们项目的一个编码:

<!-- 编译时编码格式设定 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- 编码格式设定 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

​ 在 <build></build>中,也需要去针对性的指定我们每个jar包的入口文件。以system-admin为例,因为这个为可运行jar,我们就需要在其pom.xml中去配置来指定我们的启动类。

如果不进行指定启动类配置字的话,启动jar就会出现如下错误:

system-admin. jar中没有主清单属性
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <!-- 如果没有该配置,devtools不会生效 -->
                <!-- 指定该Main Class为全局的唯一入口 -->
                <mainClass>com.demo.AdminApplication</mainClass> <!--指定为该模块的启动类-->
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

​ 关于项目的编码问题我们已经解决,但是因为我目前项目的配置文件是在nacos中,所以说当jar启动读取远程配置文件时,会出现读取文件编码问题,这时候就需要使用到另外一个命令启动

java -Dfile.encoding=UTF-8 -jar system-admin.jar

​ 在我启动的时候,使用的是powershell窗口,因为窗口命令问题,-Dfile会识别为poswershell的命令,从而导致如下错误:

错误: 找不到或无法加载主类 .encoding=UTF-8

​ 解决的方法也很简单,只需要切换为cmd窗口去执行命令即可。

关于碰到的一些错误。

        at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:98)
        at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:626)
        at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:370)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
        at com.tang.GatewayApplication.main(GatewayApplication.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.nio.charset.CoderResult.throwException(Unknown Source)
        at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
        at sun.nio.cs.StreamDecoder.read(Unknown Source)
        at java.io.InputStreamReader.read(Unknown Source)
        at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125)
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183)
        ... 40 common frames omitted

​ 在启东时没有加上 -Dfile.encoding=UTF-8启动,就会报如下错误java.nio.charset.MalformedInputException: Input length = 1这是因为读取nacos配置文件为乱码,所以在启动时需要去注意到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值