使用嵌入式 Flapdoodle Mongo db 进行 Java 21 升级在 gitlab 管道中失败

问题描述 投票:0回答:1

将我们的一项服务升级到 Java 21 和 Spring boot 3.1.5。服务包含嵌入式 Mongo 数据库,并已更新如下。

<dependency> 
        <groupId>de.flapdoodle.embed</groupId> 
        <artifactId>de.flapdoodle.embed.mongo.spring30x</artifactId>
        <version>4.11.0</version> 
        <scope>test</scope>
    </dependency> 

但是,所有单元和集成测试都在本地执行,没有任何问题,但在 gitlab runner 中失败。

我们如何解决这个错误?.

以下是相同的错误消息。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
    'syncClientServerWrapper' defined in class path resource 

    Caused by: java.lang.RuntimeException: could not start process at 
    de.flapdoodle.embed.mongo.transitions.MongoServerStarter.result(MongoServerStarter.java:129) 
    at de.flapdoodle.reverse.TransitionWalker.resolve(TransitionWalker.java:58) 
    at de.flapdoodle.reverse.TransitionWalker.resolve(TransitionWalker.java:46) 
    at de.flapdoodle.reverse.TransitionWalker.initState(TransitionWalker.java:180) 
    ... 102 common frames omitted 
    Caused by: java.io.IOException: Cannot run program  
    "/root/.embedmongo/fileSets
    /4b177cbd88668a95edf49714fa2964a4a940f94feb0f2b0e279810a865d7d313/mongod" 
    (in directory "/tmp/temp--033a8268-15b0-4a18-b06b-1f5a6901c65f/
     workingDir1858686435819966950"): error=2, No such file or directory 
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170) 
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089) 
    at de.flapdoodle.embed.process.runtime.ProcessControl.start(ProcessControl.java:177) 
    at de.flapdoodle.embed.process.types.RunningProcess.start(RunningProcess.java:76) 
    at de.flapdoodle.embed.mongo.transitions.MongoServerStarter.result(MongoServerStart

尝试了各种方法来解决此问题,但无法解决此问题。因此我们需要降级到 Java 17。

gitlab-ci java-21 flapdoodle-embed-mongo
1个回答
0
投票

您用于运行程序的图像可能与嵌入式 mongo 不兼容。就我而言,我使用了 gradle 的 apline 图像,这导致了问题。切换到使用非 apline 图像,即 gradle:jdk-11 能够解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.