首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liquibase/Springboot启动异常

Liquibase/Springboot启动异常
EN

Stack Overflow用户
提问于 2021-12-20 12:12:39
回答 4查看 1.5K关注 0票数 14

从昨天(周日)早上开始,我的生产应用程序无法启动,没有从我身边的代码更改。它运行Springboot 2.3.4,Liquibase-core 3.8.0,并托管在亚马逊linux2上。有趣的是,只有在部署时,本地才没有例外。

下面是相关的堆栈跟踪:

代码语言:javascript
复制
Caused by: liquibase.exception.UnexpectedLiquibaseException: java.nio.file.NoSuchFileException: /tmp/agent12302722365010540729.jar
 at liquibase.servicelocator.ServiceLocator.setResourceAccessor(ServiceLocator.java:129)
 at liquibase.servicelocator.ServiceLocator.<init>(ServiceLocator.java:69)
 at liquibase.servicelocator.CustomResolverServiceLocator.<init>(CustomResolverServiceLocator.java:16)
 at org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener$LiquibasePresent.replaceServiceLocator(LiquibaseServiceLocatorApplicationListener.java:55)
 at org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener.onApplicationEvent(LiquibaseServiceLocatorApplicationListener.java:44)
 at org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener.onApplicationEvent(LiquibaseServiceLocatorApplicationListener.java:36)
...
Caused by: java.nio.file.NoSuchFileException: /tmp/agent801508645517312012.jar
  at liquibase.resource.ClassLoaderResourceAccessor.getResourcesAsStream(ClassLoaderResourceAccessor.java:53)
  at liquibase.servicelocator.ServiceLocator.setResourceAccessor(ServiceLocator.java:115)

我双重检查了所有与应用程序相关的文件和env变量,它们都是相同的。这个文件与我的应用程序没有任何关系。

你知道这个文件是什么吗?为什么Liquibase突然要找到它?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-12-20 15:57:49

我也有同样的问题。在启动amazon 2时,安装了一个安全修补程序。

导致此问题的包是log4j-CVE-2021-44228-Hotpatch.noarch.noarchin/var/log/yum.log中检查这个包。

临时解决方案是卸载修补程序并安装另一个java版本。

代码语言:javascript
复制
yum remove log4j-cve-2021-44228-hotpatch.noarch
yum install java-11-openjdk-11.0.12.0.7-0.amzn2.0.2.x86_64

感谢@mihristov的解决方案。

票数 6
EN

Stack Overflow用户

发布于 2021-12-21 14:10:10

为了更详细地介绍一下这里发生的事情:

AWS已经开发了一个system d服务,它每秒钟都会查找系统上运行的任何JVM。对于它所找到和支持的所有内容,它连接一个java代理,该代理在运行时用硬编码的安全字符串替换log4j JNDI lookup()方法。

我不清楚为什么清算公司在这个问题上失败了。我确实看到,已经给出的答案似乎太有侵略性。不需要删除/重新安装/更新JVM。你可以通过以下方法来解决这个问题:

停止systemd修补程序服务的sudo service log4j-cve-2021-44228-hotpatch status|stop|start

创建杀死文件,如果服务读取该文件,则停止应用修补程序:sudo touch /etc/log4j-cve-2021-44228-hotpatch.kill

票数 4
EN

Stack Overflow用户

发布于 2021-12-21 08:01:31

对于我们来说,转移到最新的清算基地(4+)解决了这个问题。他们在4+中使用了更标准的4+,这似乎产生了不同的效果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70421613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档