问题标签 [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.
jvm - 为什么 GraalVM (SubstrateVM) 本机映像在运行时使用的内存比相应的 JIT 构建少得多?
我想知道为什么 Java 应用程序的 GraalVM (SubstrateVM) 本机映像使它运行在运行时行为将消耗更少内存的地方,但如果正常运行,它将消耗更多内存?
为什么不能让正常的 JIT 同样消耗少量的内存呢?
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 的源代码并对其进行破解之外解决的问题吗?
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-path
X,Y,但不是 Z。
我错过了什么?如果有人可以发布一个已知良好的命令行(理想情况下适用于 Windows),我将不胜感激。
spring - 如何从命令行配置由 GraalVM Native Image 本地编译的 Spring Boot 应用程序的端口?
Spring Boot 通过引入Spring Graal Native 0.6.0特性引入了 GraalVM Native Image 支持。现在,如果我们有一个成功编译的原生 Spring Boot 应用程序,我们如何在命令行启动时动态更改应用程序的端口(就像我们在 JVM 模式下习惯的那样)?
这对于 Docker 或云提供商的部署场景至关重要......
amazon-cloudwatch - Micronaut:记录器未出现在 AWS Cloudwatch 和 Java 应用程序中未在本地运行
我有一个Micronaut
必须通过以下版本更改升级的微服务:
Micronaut bom
版本:1.3.1
到1.3.4
Gradle
:5.1.1
到5.3
Graal VM
:19.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
。
我不确定问题是什么。任何帮助是极大的赞赏。
java - 有没有办法在 GraalVM 原生映像中使用 kotlin.random.Random
我尝试使用 Kotlin 构建一个简单的应用程序,该应用程序在 GraalVM 本机映像上使用 kotlin.random.Random 类。但这在运行时失败。堆栈跟踪见下文。
作为一种解决方法,您可以使用 java 标准 java.util.Random 类。
有人可以告诉我如何使用 Kotlin 类型吗?
应用程序.kt
Dockerfile
运行时错误
最小工作示例项目在这里
quarkus - 本机模式下的 GraalVM Quarkus 语言环境
在本地构建时,我对可用的语言环境有意外的行为。在本机模式下,我只有一个可用的语言环境。
我的应用程序非常简单:
结帐后,如果我在开发模式下启动应用程序:
您可以调用端点:http://localhost:8080/api/locales
这个端点返回很多语言环境:
如果我在本机模式下做同样的事情:
我只获得一个语言环境:
如何获得所有可用的语言环境?
此外,由于这种行为,我还有另一个问题。如您所见,我是否尝试开发想要使用语言环境的服务。语言环境未使用,我无法应用货币格式。为了证明这一点,我开发了 CurrencyController。
您可以使用 curl 调用它:
如果我在本机模式下做同样的事情:
- 在 GraalVM 版本 19.3.1 CE 上运行 Quarkus 本机映像插件
- Quarkus 1.4.1.Final
java - GraalVM native-image Java i18n 语言环境问题
我尝试使用语言环境制作程序。我想用 GraalVM 本地编译这个程序,但是 Locale 在本地编译后没有相同的行为。
我成功地用以下程序隔离了问题:
我可以用 Java 编译这个程序:
并执行它(从外部目录):
结果是:
我现在可以制作原生图像并启动它:
结果不一样:
看起来我在本机模式下遇到了 i18n 的问题。我真的不明白为什么。我正在使用 graalvm-ce-java11-20.0.0 但我使用具有相同行为的先前版本进行了测试。
如有必要,我随时为您服务。
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 应用程序?
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后通过命令行
任何想法 ???感谢你!