问题描述
我使用的是在防火墙后面运行的 MacOS Catalina 10.15.7 机器。
我开始评估 Micronaut 和 Quarkus 作为 Spring Boot 的替代品,其中一个主要原因是能够编译为原生映像。
为了能够做到这一点,我必须安装 GraalVM。我按照 GraalVM Community Edition 20.3.0 此处的说明下载了 graalvm-ce-java11-darwin-amd64-20.3.0.tar.gz,将其解压缩到我选择的文件夹中,然后将 /Users/myId/work/dev/graalvm/graalvm-ce-java11-20.3.0/Contents/Home/
导出为 GRAALVM_HOME 和在我的路径中添加了 GRALLVM_HOME\bin。
在此之后,我前往 https://code.quarkus.io/ 并上传了一个 Hello World
Quarkus 项目以使用 gradle (6.8) 进行构建。
当我运行 gardle build
时,一切正常。
当我运行 gradle quarkusDev
时,应用程序正常启动,我可以到达 Hello World
终点。
但是,当我尝试使用 gradle build -Dquarkus.package.type=native
构建本机映像时,出现以下异常
java.lang.RuntimeException: Cannot find the `native-image` in the GRAALVM_HOME,JAVA_HOME and System PATH. Install it using `gu install native-image`
尝试运行 gu install native-image
会在我的屏幕上弹出一个窗口说
“graalvm-ce-java11-20.3.0” is damaged and can’t be opened. You should move it to the Bin.
当我尝试使用 gradle build -Dquarkus.package.type=uber-jar
或仅使用 gradle build
运行 jar 构建时,会弹出相同的错误窗口
我不认为我的 GraalVM 下载已损坏,因为解压后的文件看起来没问题,而且似乎具有正确的结构。
任何帮助或提示将不胜感激。提前致谢。
解决方法
在 MacOS catalina 中,您可以通过执行以下操作来解决此问题:
xattr -d com.apple.quarantine <PATH TO GRAALVM INSTALLATION>
这是一个已知问题。可在以下链接中找到更多信息: