问题标签 [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.
spring-boot - springboot fat jar 的 graalvm 本机映像抛出 NoSuchMethodException xxx。() 在运行时
我设法为我的 springboot fat jar 构建了 native-image,但是java.lang.NoSuchMethodException: com.my.passgenerator.PassGeneratorApplication.<init>()
当我运行它时它会抛出异常:“”。我试图添加一个默认构造和一个空的 init() 方法,但都失败了。如何克服此异常并运行此本机映像?
以下是完整的日志:
postgresql - Quarkus 原生镜像:postgresql 连接被拒绝
我创建了一个 quarkus 应用程序,可以访问 localhost 上的 postgresql 数据库。创建本机映像后,我尝试使用以下命令运行应用程序:
docker run -i --rm -p 8080:8080 quarkusimage
如果我尝试使用邮递员的方法,我会得到以下结果:
addEmployee Hibernate: select nextval ('quarkus.hibernate_sequence') 2020-06-18 20: 43: 38,214 WARN [io.agr.pool] (Agroal_20041415421) Datasource '': Connection to localhost: 5432 denied. 检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。
如果我尝试使用
docker run --net = "host" -i --rm -p 8080:8080 quarkusimage
应用程序访问本地主机上的数据库,但是如果我尝试使用邮递员调用它就无法访问该服务。
我究竟做错了什么?
谢谢
java - Micronaut 数据本机图像:不存在 [io.micronaut.data.operations.PrimaryRepositoryOperations] 类型的 bean
我正在使用 Micronaut、Micronaut Data、JPA、Postgres 和 GraalVM 开发一个新示例,遵循 https://github.com/rmondejar/micronaut-postgres-example
此示例是使用具有以下功能的 Micronaut Launch 2.0.0.RC1 创建的:
没有本机图像,它可以完美运行,测试通过:
生成本机映像并执行它看起来不错:
但是,一旦到达存储库,它总是会失败:
转到本机时似乎是配置错误的问题,但是由于我遵循指南并使用生成的应用程序,因此不确定缺少什么。
spring-boot - 带有 h2 驱动程序的 spring-boot fat jar 无法构建 graalvm 本机映像
我无法将带有 h2 驱动程序的 spring-boot fat jar 转换为 graalvm 本机映像,以下是异常消息:
我确实首先使用代理运行它以获取配置文件并在 native-image-maven-plugin 配置中包含“-H:ConfigurationResourceRoots=nativeimage”。
我的构建环境中使用的模块版本:
这可以通过配置或其他方式解决吗?
编辑@ 2020/07/01 --
spring-boot-starter-parent:2.4.0-SNAPSHOT spring-
graalvm
-native:0.8.0-SNAPSHOT
和
编辑@ 2020/07/02 -
当我尝试在构建时初始化“无意初始化”类时出现以下错误。
这会以不同的调用路径重复 6 次。
hikaricp - 使用 hikari 数据源构建 micronaut 原生镜像
面临运行打包在本机映像中的 micronaut 应用程序的问题。
micronaut-data-hibernate-jpa
我使用并基于文档创建了简单的演示应用程序,我需要添加一些数据库连接池。我选择了 hikari 并添加了这样的依赖micronaut-jdbc-hikari
。
我使用 maven 作为构建工具并添加插件来构建 native-imagenative-image-maven-plugin
native-image.properties
当我使用 jvm 运行应用程序时,一切正常。但是当我尝试运行打包为本机图像的相同应用程序时,我得到了这样的错误
更新/解决方案
基于@Airy 的回答,我在native-image.properties 中添加了反射配置。就我而言,它看起来像这样
另一个解决方案是更改 hikari 依赖项的范围以编译并将错过的字段/类添加到提示注释中,如下所示
整个例子你可以在这里找到
java - Jackson 在编译为本机映像的 Micronaut 应用程序中没有找到 POJO 的属性
我用 Micronaut 2.0.0 创建了一个简单的应用程序:它是使用 Micronaut 应用程序生成器在https://micronaut.io/launch/生成的,然后我添加了以下内容:
然后我使用./mvnw clean package
.
当我用 启动它时java -jar target/micronaut-minimal-1.0.jar
,它成功启动。它正确响应:
现在我构建一个原生镜像:
然后我运行它:
它开始正常。
现在同样的请求产生了一个错误:
我尝试添加@JsonProperty
到message
字段或getMessage()
方法(带或不带value
属性),但无济于事。
我认为这与反射可能在本机图像中不可用的事实有关。但是我该如何解决这个问题呢?
我正在使用 GraalVM CE 20.1.0(构建 11.0.7+10-jvmci-20.1-b02)来运行和构建 jar 和图像。
date - Quarkus GraalVM native image DateTimeFormatter and Localization
I tried to use localization in java to print date with local style. I already make a similar functionality with numbers and currencies but I failed to apply the same behavior to date.
As I learning when I posted this topics few days ago, GraalVM Quarkus Locale in native mode , use localization in native mode need to use create an "@AutomaticFeature".
This trick works for numbers and currencies :
But it's not works with DateTimeFormatter :
In development mode all is ok but in native mode, locale is ignore. Style is always le same, month name isn't translate. I was looking for a solution on google but i didn't find anything so I ask on StackOverflow.
I am at your disposal if needed.
Regards, Stéphane.
java - 使用来自 GraalVM 的 native-image 的 Java 调用 C 库
我有一个简单的项目:https ://github.com/MarcoLunar/native-pid-test 它所做的就是从 C 库调用 getpid。项目很简单:
从 IDE 启动时一切正常:
当尝试使用来自 GraalVM 的本机映像进行构建时,出现此错误:
我已经尝试了很多次,许多不同的解决方案......但现在我没有更多要检查的了。我正在寻求帮助以修复该项目。我认为这是可能的,因为在某些配置下,我遇到了与 https://github.com/oracle/graal/issues/2261 相同的错误……有人修复了它……但没有写出解决方案: (
java - GraalVM 构建的原生镜像不支持 Unsafe.staticFieldOffset() 方法
我在一个名为的文件中有以下程序Test.java
:
它只是获取一个Unsafe
实例,然后调用它的staticFieldOffset()
方法。
我用 编译它javac Test.java
,它输出一堆关于Unsafe
.
然后我运行生成的类文件java Test
并获得以下内容:
所以它有效。
现在,我用native-image --no-server --no-fallback Test app
.
好的,最后,我用./app
. 结果如下:
所以似乎在native模式下,它不支持Unsafe.staticFieldOffset()
方法。
有什么方法可以让它工作,还是应该在 GraalVM 代码中解决?这似乎阻碍了 Netty 在本机图像中的使用,请参阅https://github.com/netty/netty/issues/10051作为示例。
我正在使用 GraalVM 20.1:
使用代理收集PS配置没有帮助。也就是说,当我添加-agentlib:native-image-agent=config-output-dir=target/config
到java
命令以收集有关反射的运行时数据和添加内容然后添加-H:ConfigurationFileDirectories=target/config
到native-image
命令时,生成的本机程序的行为相同。
ios - GraalVM native-image 将 Java 库编译成 iOS 框架/库
GraalVM native-image 允许我们将 Java 库转换为本地可执行文件。它还允许编译到提到的共享库https://www.graalvm.org/docs/Native-Image/user/README
原生镜像可以构建为默认的独立可执行文件,也可以通过将 --shared 传递给 native-image 来构建为共享库。为了使图像有用,它需要至少有一个入口点方法。
我找到的最接近的线程是这个https://github.com/oracle/graal/issues/373,但仍然找不到任何适用于 iOS 的指南,这可能吗?我可以遵循任何指南吗?