问题标签 [graalvm-native-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1148 浏览

jvm - 为什么 GraalVM (SubstrateVM) 本机映像在运行时使用的内存比相应的 JIT 构建少得多?

我想知道为什么 Java 应用程序的 GraalVM (SubstrateVM) 本机映像使它运行在运行时行为将消耗更少内存的地方,但如果正常运行,它将消耗更多内存?

为什么不能让正常的 JIT 同样消耗少量的内存呢?

0 投票
1 回答
497 浏览

visual-studio - GraalVM native-image 基本链接器错误

我正在尝试使用 graalVM v20.0.0 CE 创建一个简单的 hello world 本地映像。

最初我遇到“本机工具链”错误,但是从“x86 Native Tools Command Prompt for VS2017”启动命令行后,我克服了这个障碍。

现在的问题是一串链接器错误:

java.lib(jni_util.obj):错误 LNK2019:函数 JNU_PrintString 中引用的未解析的外部符号 __imp_fprintf

java.lib(jni_util.obj):错误 LNK2019:函数 JNU_PrintString 中引用的未解析的外部符号 __imp___iob_func

net.lib(net_util_md.obj):错误 LNK2019:函数 NET_ThrowNew 中引用的未解析的外部符号 __imp_sprintf

net.lib(net_util_md.obj):错误 LNK2019:函数 dumpAddr 中引用的未解析的外部符号 __imp_printf

jvm.lib(JvmFuncs.obj):错误 LNK2019:未解析的外部符号 __imp_vfprintf 在函数 jio_vfprintf 中引用

jvm.lib(JvmFuncs.obj):错误 LNK2019:未解析的外部符号 __imp_vsnprintf 在函数 jio_vsnprintf 中引用

MSVCRT.lib(vsnprintf.obj):错误 LNK2001:无法解析的外部符号 __imp_vsnprintf

MSVCRT.lib(vsnprintf.obj):错误 LNK2001:无法解析的外部符号 __imp__vsnprintf

D:\Tools\graalvm-ce-java8-20.0.0\bin\helloworld.exe : 致命错误 LNK1120: 7 unresolved externals

这些似乎都与最基本的函数调用直接相关,printf.

我查看了native-image的命令行选项,并希望明确设置--shared--static会做的伎俩,但没有骰子。其他本机映像命令行选项看起来都不相关。

我进一步尝试从同一命令提示符的 VS2015 版本开始。没有。

所以我被困住了。这是我可以在获取 graalvm 的源代码并对其进行破解之外解决的问题吗?

0 投票
1 回答
597 浏览

java - 使用自定义类路径使用 GraalVM 本机映像命令行?

我在一个项目中,目前构建成 26 个罐子(如果我们计算仅测试罐子,+6)。出于性能原因,我们希望将它们全部组合成一个可执行文件。这是在 Windows 机器上,带有 graalVM-ce-java11-20.0.0。我们正在使用 IntelliJ 和 gradle。在我尝试在 gradle 中重现它之前,我目前只是想提出一个可以工作的命令行。Gradle 还没有出现在图片中,因此缺少适当的标签。

我已经尝试了我能想到的一切来度过我的第一次缺课,但无济于事。这让我觉得有些基本的东西,我离得太近了,由于路上所有的三次被诅咒的树,我看不到森林。

我目前在 graalvm/bin 文件夹中拥有所有 jar。这应该很容易,对吧?没那么多。

我正在尝试构建 jar D,使用来自(以及其他地方)jar A 的类。 foo.bar.AP 是它找不到的第一个类,它将它踢出或回退构建。

我尝试了目录的相对路径:native-image -cp ./ -jar D

我尝试了目录的完整路径:native-image -cp c:/foo/bar/baz -jar D

我已经尝试了有问题的 jar 的完整路径:native-image -cp c:/graalvm/bin/A.jar -jar D

我已经尝试了类路径的所有别名:

  • native-image -cp ... -jar D
  • native-image -classpath ... -jar D
  • native-image --class-path ... -jar D

我什至尝试通过 gradle 将类路径添加到 D.jar 的 MANIFEST.MF 中jar { manifest { attributes: ( "Class-Path": "..." ) } }"Main-Class": "foo.bar.D.baz"这是在同一个地方的工作属性旁边。

我是不是刚刚发生在 native-image 自动忽略的一个目录上(它是自己的 bin 文件夹?)让我们找出答案!不,这也没有帮助。

请注意,我没有在这里尝试所有可能的组合/排列。 --class-pathX,Y,但不是 Z。

我错过了什么?如果有人可以发布一个已知良好的命令行(理想情况下适用于 Windows),我将不胜感激。

0 投票
1 回答
120 浏览

spring - 如何从命令行配置由 GraalVM Native Image 本地编译的 Spring Boot 应用程序的端口?

Spring Boot 通过引入Spring Graal Native 0.6.0特性引入了 GraalVM Native Image 支持。现在,如果我们有一个成功编译的原生 Spring Boot 应用程序,我们如何在命令行启动时动态更改应用程序的端口(就像我们在 JVM 模式下习惯的那样)?

这对于 Docker 或云提供商的部署场景至关重要......

0 投票
0 回答
194 浏览

amazon-cloudwatch - Micronaut:记录器未出现在 AWS Cloudwatch 和 Java 应用程序中未在本地运行

我有一个Micronaut必须通过以下版本更改升级的微服务:

  1. Micronaut bom版本:1.3.11.3.4
  2. Gradle:5.1.15.3
  3. Graal VM19.2.1

我正在使用buildspec.yml下面给出的构建本机图像:

example-function.zip部署到AWS Lambda并通过测试时,APIGateway我能够获得响应,但无法查看我在CloudWatch Logs.

我已经按照这篇文章https://docs.aws.amazon.com/kinesisanalytics/latest/java/cloudwatch-logs-writing.html#cloudwatch-logs-writing-slf4j将 Logger 依赖项添加到我的build.gradle文件中,但日志是仍然没有出现在 AWS 上。

此外,我无法使用以下命令在本地运行应用程序:gradlew run -t classes. 构建成功,但运行命令不像端点postman所说的那样工作Could not get any response

我不确定问题是什么。任何帮助是极大的赞赏。

0 投票
1 回答
538 浏览

java - 有没有办法在 GraalVM 原生映像中使用 kotlin.random.Random

我尝试使用 Kotlin 构建一个简单的应用程序,该应用程序在 GraalVM 本机映像上使用 kotlin.random.Random 类。但这在运行时失败。堆栈跟踪见下文。

作为一种解决方法,您可以使用 java 标准 java.util.Random 类。

有人可以告诉我如何使用 Kotlin 类型吗?

应用程序.kt

Dockerfile

运行时错误

最小工作示例项目在这里

0 投票
1 回答
830 浏览

quarkus - 本机模式下的 GraalVM Quarkus 语言环境

在本地构建时,我对可用的语言环境有意外的行为。在本机模式下,我只有一个可用的语言环境。

我的应用程序非常简单:

结帐后,如果我在开发模式下启动应用程序:

您可以调用端点:http://localhost:8080/api/locales

这个端点返回很多语言环境:

如果我在本机模式下做同样的事情:

我只获得一个语言环境:

如何获得所有可用的语言环境?

此外,由于这种行为,我还有另一个问题。如您所见,我是否尝试开发想要使用语言环境的服务。语言环境未使用,我无法应用货币格式。为了证明这一点,我开发了 CurrencyController。

您可以使用 curl 调用它:

如果我在本机模式下做同样的事情:

  • 在 GraalVM 版本 19.3.1 CE 上运行 Quarkus 本机映像插件
  • Quarkus 1.4.1.Final
0 投票
0 回答
128 浏览

java - GraalVM native-image Java i18n 语言环境问题

我尝试使用语言环境制作程序。我想用 GraalVM 本地编译这个程序,但是 Locale 在本地编译后没有相同的行为。

我成功地用以下程序隔离了问题:

我可以用 Java 编译这个程序:

并执行它(从外部目录):

结果是:

我现在可以制作原生图像并启动它:

结果不一样:

看起来我在本机模式下遇到了 i18n 的问题。我真的不明白为什么。我正在使用 graalvm-ce-java11-20.0.0 但我使用具有相同行为的先前版本进行了测试。

如有必要,我随时为您服务。

0 投票
0 回答
338 浏览

java - 如何在没有 JRE 的情况下在 GraalVM 中运行 Spring Boot

我正在尝试使用 GraalVM Native 运行 Spring Boot 应用程序。成功编译成单个文件后,我可以轻松运行二进制文件,Spring Boot 正常启动,但是当我尝试在带有ubuntu图像的 docker 内运行它时(它不包含 java,但 GraalVM 原生中的简单 HelloWorld 可以在没有 JRE 的情况下工作)我收到此错误:

我读过我可能需要在运行时而不是编译时初始化类(来自:Problem with create AWS Lambda function using Micronaut and GraalVM)。但我不知道我应该通过哪些课程--delay-class-initialization-to-runtime。如何在没有 JRE 的情况下运行我的 Spring Boot 应用程序?

0 投票
1 回答
928 浏览

java - 使用 Maven 构建一个简单的 Graal 原生示例

经过很长时间,我终于能够在此环境下使用 VS 2017 的开发人员命令提示符通过命令行使用 Graal native 创建一个简单的“HelloWorld”:

  • Graal 虚拟机:graalvm-ce-java11-19.3.2
  • Windows SDK:Windows SDK 10。

我无法让它与其他版本的 graal(graalvm-ce-java11-20.2.0-dev、graalvm-ce-java8-20.2.0-dev..)一起使用,可能是因为本地开发环境的特殊性(无法使用 Windows 7 SDK,例如..)

我的下一个目标是生成简单的可执行文件,但具有一些更复杂的依赖关系,例如。以下 vertx 示例

https://how-to.vertx.io/graal-native-image-howto/

理想情况下,我的意图是使用 maven 插件生成它。如果不可能,作为替代方法,创建一个 fat jar,然后将其转换为原生

1.使用native-image-maven-plugin

错误:无法在项目 demo01GraalTestClasses 上执行目标 org.graalvm.nativeimage:native-image-maven-plugin:19.3.2:native-image(默认):在没有本地图像的 Java 11+ 上构建图像需要 MAVEN_OPTS='-- add-exports=java.base/jdk.internal.module=ALL-UNNAMED' -> [帮助 1] [错误]

2.创建fat jar后通过命令行

任何想法 ???感谢你!