使用Maven构建简单的Graal本机样本

时间:2020-05-15 18:02:56

标签: java maven graalvm-native-image

很长一段时间之后,终于可以在这种环境下,使用VS 2017的开发人员命令提示符,通过命令行使用Graal native创建一个简单的“ HelloWorld”:

  • Graal VM: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插件生成它。 如果不可能的话,作为替代方案,创建一个胖子罐,然后将其转换为本地

1。使用native-image-maven-plugin

  <groupId>org.graalvm.nativeimage</groupId>
  <artifactId>native-image-maven-plugin</artifactId>
  <version>19.3.2</version>

错误:在项目demo01上无法执行目标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。创建胖子后按命令行显示

openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment GraalVM CE 19.3.2 (build 11.0.7+10-jvmci-19.3-b10)
OpenJDK 64-Bit Server VM GraalVM CE 19.3.2 (build 11.0.7+10-jvmci-19.3-b10, mixed mode, sharing)

[ **Important** ] call vcvars64.bat !

**native-image.cmd --verbose --static --no-fallback -H:+ReportExceptionStackTraces -jar demoGraalTestClasses.jar demo**



**Error**:

[demo:4920]    classlist:   3,964.94 ms
[demo:4920]        (cap):  38,810.44 ms
[demo:4920]        setup:  41,140.72 ms
[demo:4920]     analysis:  18,151.19 ms
Fatal error: com.oracle.svm.core.util.VMError$HostedError: class java.net.TwoStacksPlainSocketImpl not found

有什么主意吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我遇到了同样的错误,没有解决方法。似乎它比Windows插件问题更多。 我放弃并准备了ubuntu VM,在与Windows(pom.xml,java11,graalvm 20.0.0)完全相同的条件下运行本机映像,并且可以正常工作。

因此,我要么等待下一个插件发布,要么尝试使用Linux。不要期望在这里有快速的建议。