Liquibase - ZipFile.java 中的 FileNotFoundException

Posted

技术标签:

【中文标题】Liquibase - ZipFile.java 中的 FileNotFoundException【英文标题】:Liquibase - FileNotFoundException at ZipFile.java 【发布时间】:2022-01-23 16:17:09 【问题描述】:

在 Jenkins 中运行测试时,有时 Liquibase 会失败并显示 FileNotFoundException。在本地运行时不会出现这种情况。

奇怪的是,这个错误并不是每次构建都会发生。

例外

java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
    Caused by: liquibase.exception.UnexpectedLiquibaseException at ServiceLocator.java:129
        Caused by: java.io.FileNotFoundException at ZipFile.java:-2

服务定位器

try 
    manifests = resourceAccessor.getResourcesAsStream("META-INF/MANIFEST.MF");
    if (manifests != null) 
        for (InputStream is : manifests) 
            Manifest manifest = new Manifest(is);
            String attributes = StringUtils.trimToNull(manifest.getMainAttributes().getValue("Liquibase-Package"));
            if (attributes != null) 
                for (Object value : attributes.split(",")) 
                    addPackageToScan(value.toString());
                
            
            is.close();
        
    
 catch (IOException e) 
    throw new UnexpectedLiquibaseException(e);

我们正在使用Liquibase 3.8.1

这可能是什么原因造成的?

【问题讨论】:

你在云端运行测试用例吗? @RaushanKumar 是的,我相信。这会如何影响它? @RaushanKumar 这是一个 Amazon EKS 集群。 【参考方案1】:

我认为这个问题是由于 AWS 上的 log4j 安全补丁更新而发生的。 我不确定它对 Liquibase 有何影响。

临时解决办法是卸载补丁并安装另一个 java 版本。

yum 删除 log4j-cve-2021-44228-hotpatch.noarch 百胜安装 java-11-openjdk-11.0.12.0.7-0.amzn2.0.2.x86_64

【讨论】:

以上是关于Liquibase - ZipFile.java 中的 FileNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

Unhandled event loop exception GC overhead limit exceeded

java.util.zip.ZipException这个问题怎么解决?

liquibase:你能用 liquibase addColumn 指定“列后”吗?

是否存在 liquibase 锁定超时?

如何使用 Liquibase 强制列顺序?

liquibase的使用