springboot的jar启动报A child container failed during start错误

问题背景:

    因为要做基于maven-proguard的代码混淆,需要把混淆后的class文件更新至原jar包中。

# 解压jar包 看到三个文件夹 BOOT-INF META-INF org

jar -xvf xxx.jar

# 替换类文件

#压缩

jar -cvfM0 xxx-pg.jar BOOT-INF/ META-INF/ org/

#启动

nohup jar -jar xxx-pg.jar &

问题描述:

仔细查看报错信息,发现报错日志如下:

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1183) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 10 common frames omitted

解决思路:

网上搜到的文章大多是servlet-api.jar包版本问题,跟我遇到的不一样。一顿操作后发现是引入了其他jar包中的ServletContext类导致。

# java启动时增加运行参数

nohup jar -jar -verbose:class xxx-pg.jar &

发现javax.servlet.ServletContext竟然是从hbase-shaded-server-1.2.6.jar中加载的

maven依赖删除此jar解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。