Quarkus从2.15.3升级至3.2.2后执行runner.jar报错求助
问题解决:Quarkus 3.x原生构建产物执行报错找不到
org.graalvm.nativeimage.ImageInfo 核心原因
你混淆了Quarkus原生镜像和普通可执行Jar的运行方式:
mvn package -Dnative生成的是GraalVM原生可执行文件(无需JVM直接运行),不是Jar包;- 你尝试用
java -jar运行的applicationRunner.jar其实是普通的JVM可执行Jar,它的依赖中不包含GraalVM的ImageInfo类,自然会报错。
解决步骤
找到正确的原生构建产物
执行mvn package -Dnative后,target/目录下会生成一个无后缀的可执行文件(Linux/macOS)或.exe文件(Windows),文件名格式通常为[你的应用名]-[版本号]-runner。直接运行原生可执行文件
在终端中执行该文件即可,比如:./target/application-1.0.0-SNAPSHOT-runner(Windows下直接双击或在命令行输入文件全名)
如果需要运行普通JVM Jar
不要加-Dnative参数,执行:mvn package然后用
java -jar运行生成的runner.jar:java -jar target/application-1.0.0-SNAPSHOT-runner.jar
关于反射配置的说明
org.graalvm.nativeimage.ImageInfo是GraalVM原生构建工具链的内部类,仅在原生镜像构建时存在,普通JVM环境下不会包含这个类。所以添加它到反射配置完全没用,反而会因为类不存在报错——只要用正确的方式运行对应产物,Quarkus会自动处理环境判断,不会触发这个错误。
内容的提问来源于stack exchange,提问作者amrit regmi
相关产品推荐
相关产品推荐

