设为首页 加入收藏

TOP

Jib构建镜像的问题分析(Could not find or load main class ${start-class})(二)
2019-09-30 16:46:34 】 浏览:48
Tags:Jib 构建 问题 分析 Could not find load main class start-class
228/files/c8757e1f9ea47edd78df18142de7836a68f22034 ,如果mainClass不像一个class类的名称,就输出警告,这个逻辑在Gradle和Maven插件中都写入了:
在这里插入图片描述
  • 最后一个问题:上面代码中的mainClass从哪来的?打开上图的源码,地址是:https://github.com/GoogleContainerTools/jib/blob/c8757e1f9ea47edd78df18142de7836a68f22034/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildImageMojo.java ,如下图红框,从方法名可以推测,该值来自构建SpringBoot工程的maven插件,所以前面Q Chen提到main-class变量的值是Spring修改的,应该是来自这段代码:
    在这里插入图片描述
    此时的您,如果依然意犹未尽,咱们再来巩固一下SpringBoot的start-class

    关于start-class

  • 熟悉SpringBoot的同学其实对${start-class}并不陌生,当工程中多个类中都有main方法时,使用该参数来指定SpringBoot的启动类;
  • 先看SpringBoot官方文档熟悉一下start-class,地址是:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ ,下图内容比较关键:我们设置的启动类被指定到Start-Class属性中,而Main-Class属性变成了org.springframework.boot.loader.JarLauncher,这才是SpringBoot真正的启动类:
    在这里插入图片描述
  • 如下图,这是个补充说明,Main-Class属性的值被转移到Start-Class属性这个动作,是maven插件在构建jar的时候做的:
    在这里插入图片描述
  • 所以start-class的值是来自main-class,再看main-class的值从哪里来,如下图红框所示,maven插件会去查找带有public static void main(String[] args)的类:
    在这里插入图片描述
    至此,Jib构建的镜像问题分析完毕,一个小小的问题引发了这么多学习和探索,虽然有点费时间,但是可以让人再次感受到"技术是相通的"感觉,不知道您有没有这种感觉呢?

    欢迎关注我的公众号:程序员欣宸

    在这里插入图片描述

  • 首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Java生鲜电商平台-商品分类表和商.. 下一篇如何优雅实现属性的动态注入

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目