Quarkus Native测试报错:无法确定运行进程状态
Quarkus Native测试失败:
target/quarkus.log为空导致无法检测进程状态 问题详情
- 基于Quarkus学习项目开发,可正常打包为JAR和Native二进制文件并运行
- 执行
mvn verify -Pnative命令进行Native测试时失败:Maven尝试读取target/quarkus.log中的监听端口与协议信息,但该日志文件无内容,等待60秒后报错提示无法确定运行进程状态
运行环境与配置
- 系统:macOS Monterey M1
- 环境配置命令:
sdk install java 17.0.4-oracle brew install --cask graalvm/tap/graalvm-ce-java17 sdk install maven 3.8.6 sdk install quarkus 2.10.2.Final xattr -r -d com.apple.quarantine /Library/Java/JavaVirtualMachines/graalvm-ce-java17-22.1.0/Contents/Home export JAVA_HOME=$(/usr/libexec/java_home -v 17) export PATH=$JAVA_HOME/bin:$PATH cd $JAVA_HOME/bin gu install native-image
排查与解决方案
配置Native模式日志输出
在application.properties中添加以下配置,确保Native镜像启动时日志输出到指定文件:quarkus.log.file.path=target/quarkus.log quarkus.log.file.enable=true quarkus.log.level=INFO检查日志扩展依赖
确认pom.xml中包含文件日志扩展,避免GraalVM构建时丢失日志输出能力:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-logging-file</artifactId> </dependency>手动验证Native镜像启动
直接运行target目录下的Native二进制文件(通常命名为<项目名>-runner),检查是否有日志输出、应用是否正常启动并监听端口。如果手动启动也无日志,需排查GraalVM构建时的依赖打包问题。调整测试超时时间
在pom.xml中修改Quarkus插件配置,延长Native测试的超时时间:<plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.version}</version> <executions> <execution> <goals> <goal>test-native</goal> </goals> <configuration> <timeout>120</timeout> <!-- 超时时间改为120秒 --> </configuration> </execution> </executions> </plugin>清理缓存重新构建
执行以下命令清理构建缓存,重新生成Native镜像并执行测试:mvn clean package -Pnative mvn verify -Pnative验证版本兼容性
确认GraalVM 22.1.0与Quarkus 2.10.2.Final的版本兼容性,M1芯片环境建议使用官方明确支持的版本组合。
内容的提问来源于stack exchange,提问作者ADinhLux
相关产品推荐
相关产品推荐

