新拿到公司的SpringBoot项目后如何正确启动?(依赖爆红、启动失败、启动后立即停止的解决)

        今天拿到了公司项目的权限,兴高采烈地拉取代码后,发现无法正常启动。接下来就把我遇到的问题及解决办法跟大家进行分享,希望能给和我一样的小菜狗们一点点启发,欢迎讨论~

一、问题1:拉取代码后依赖爆红

        拉取代码到本地电脑后,发现有一个公司自己写的依赖爆红,这是因为公司会有私服仓库,当我把maven仓库的setting.xml文件替换成公司的以后,这个依赖就正常导入啦。在公司中如果遇到这种问题,可以直接把同事的仓库CV一份哈哈哈,这样可能是最快的解决办法。有同学可能会期望通过反复clean+install的方式来解决依赖爆红的问题,如果咱反复多次了还是爆红,那或许可以试试我这个简单粗暴的方式哈。

二、问题2:启动项目时提示Command line is too long

        解决了依赖爆红的问题,启动项目时又遇到了第二个问题,控制台提示Command line is too long(如下)。

        根据网上的资料,有两种方法可以解决,亲试均有效~

1、 第一种是修改.idea\workspace.xml文件

        在.idea\workspace.xml中,找到PropertiesComponent标签栏,然后添加以下代码就可以啦

<property name="dynamic.classpath" value="true" />

2、第二种更简单,只需要找到idea界面右上角的Edit Configuration,然后点击Environment,找到Shorten command line,选择JAR mainfest即可,具体操作如下。

 以上两种方式任选一种就可以啦

三、问题3:项目启动后立即停止

        解决了上面两个问题后,我终于可以启动项目了,但是启动后发现项目立马停止了(如下图),而且也没有报错,好生奇怪。

        不怕报错,就怕有错还不报。我们首先要做的,就是定位异常,那么如何定位到问题呢?我的做法是通过try..catch来捕获启动时的异常,如下:

public class DesignApplication {

    public static void main(String[] args) {
        try {
            SpringApplication.run(DesignApplication.class, args);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在启动类上加上try..catch后,再次启动,果然出现了异常信息。如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xXConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'xx.xx.id' in value "${xx.xx.id}" 
。。。。 

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'xx.xx.id' in value "${xx.xx.id}"
。。。。

接下来就让我们进行异常分析吧!

        异常信息提到,某配置类(XXConfig)的某变量(id)的值没有被读到,所以导致这个类出现创建异常。那我们首先找到这个XXConfig(如下所示)

@Data 
@Configuration 
public class XXConfig { 

    @Value("${xx.xx.id}") 
    private String id;

    。。。。

}

        我们可以发现,这个变量(id)的值是通过@Value的方式读取的,即本应是从配置文件中读到的,现在没有读成功,那大概率是配置文件的读取出了问题。

        进而我们找到application.yml,发现里面写的是线上环境pro(如下图),并不是开发环境dev。而线上环境肯定是有权限限制的,所以才导致变量值未被读到,从而引起了项目启动立即停止的现象。我们将环境换成开发环境即可正常启动项目。真的真的太乌龙了。。。。。。

        最后,我们来做个小总结。虽然最终问题很愚蠢,但是整个定位问题的过程还是可以迁移的,即我们可以通过try..catch来捕获异常,出现问题不可怕,定位不到才吓人哈哈哈。另外,拉取代码后,我们可以提前检查配置环境,第三个问题就是因为我拉取代码后没有查看环境导致的,如果一开始就看到配置文件中写的是pro,那估计不用那么费劲了。

        最最后,还有个上文没有提到的点,也可能导致项目启动不起来,就是版本问题,jdk版本不一致也可能会导致启动报错哦,注意和公司保持一个版本的jdk即可避免。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值