经过很长时间,我终于能够在此环境下使用 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
<groupId>org.graalvm.nativeimage</groupId>
<artifactId>native-image-maven-plugin</artifactId>
<version>19.3.2</version>
错误:无法在项目 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后通过命令行
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
任何想法 ???感谢你!