我使用的是在防火墙后面运行的 MacOS Catalina 10.15.7 计算机。
\n我开始评估 Micronaut 和 Quarkus 作为 Spring boot 的替代品,其主要原因之一是能够编译为本机映像。
\n为了能够做到这一点,我必须安装 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\\垃圾箱在我的道路上。
之后,我访问https://code.quarkus.io/并上传了一个Hello World要使用 gradle 构建的 Quarkus 项目(6.8)。
当我运行时,gardle build一切都构建正常。\n当我运行时,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`\nRun Code Online (Sandbox Code Playgroud)\ngu install native-image …
我正在尝试使用 GraalVM 构建本机 Quarkus 映像,但遇到以下构建失败错误:
[ERROR] Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:2.9.2.Final:build (default) on project converter-service: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build threw an exception: io.quarkus.deployment.pkg.steps.NativeImageBuildStep$ImageGenerationFailureException: Image generation failed. Exit code: 1
[ERROR] at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.imageGenerationFailed(NativeImageBuildStep.java:400)
[ERROR] at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:240)
[ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[ERROR] at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:925)
[ERROR] at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR] at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
[ERROR] at java.base/java.lang.Thread.run(Thread.java:833) …Run Code Online (Sandbox Code Playgroud) 已经构建了一个native-image使用Spring Boot 3.0.1和GraalVM 22.3.0. 构建的native-image大小至少是原始应用程序 jar 的两倍。
我理解如果未使用的类作为本机映像构建过程的一部分被删除,它的大小应该更小。
我有一个作为 REST API 公开的 Quarkus 应用程序。我需要为该应用程序生成配置文件引导的优化本机映像。
我查看了 Quarkus 文档,但找不到太多内容。有人生成过相同的吗?
我在本地计算机上安装了 GraalVM Enterprise 版本。
要生成正常的本机映像,请使用以下命令:
./mvnw package -Dnative
我无法在 Catalina 10.15.2 中运行命令:
bash-3.2$ $GRAALVM_HOME/Home/bin/gu install native-image
Run Code Online (Sandbox Code Playgroud)
它返回给我这条消息:
cannot be opened because the developer cannot be verified.
Run Code Online (Sandbox Code Playgroud)
我试过跑步
sudo xattr -r -d com.apple.quarantine $GRAALVM_HOME
Run Code Online (Sandbox Code Playgroud)
在哪里
bash-3.2$ echo $GRAALVM_HOME
/Library/Java/JavaVirtualMachines/graalvm-ce-java8-19.3.0/Contents
Run Code Online (Sandbox Code Playgroud)
没有运气。我无法运行该命令,所以我无法成功运行该命令
mvn install -Pnative.
[粘贴箱][1]
我已经读过这个 [thread][2],对我不起作用。
请帮忙
更新
好的,我已应用该建议,现在我可以创建本机映像,但是当我尝试运行 mvn install -Pnative 时,出现了一个错误:
~/g/q/quarkus-echo> echo $GRAALVM_HOME
/Library/Java/JavaVirtualMachines/graalvm-ce-java8-19.3.0
aironman@MacBook-Pro-de-Alonso ~/g/q/quarkus-echo> cd $GRAALVM_HOME
aironman@MacBook-Pro-de-Alonso /L/J/J/graalvm-ce-java8-19.3.0> sudo xattr -r -d com.apple.quarantine $GRAALVM_HOME
Password:
bash-3.2$ /Library/Java/JavaVirtualMachines/graalvm-ce-java8-19.3.0/Contents/Home/bin/gu install native-image
Downloading: Component catalog from www.graalvm.org
Processing Component: Native Image
Downloading: Component native-image: Native Image …Run Code Online (Sandbox Code Playgroud) 我读过有关提前编译的内容,并且有一个Java框架Micronaut可以做到这一点。
我只是想知道是否可以在Spring Boot中做到这一点。