GraalVM - 创建一个GraalVM项目

目前Idea不支持直接创建Graalvm项目,Graalvm文档官网的东西又只提供了构建单文件的例子,但是甲骨文给了几个创建的例子:https://github.com/graalvm/native-build-tools,可以依托于Gradle或者Maven创建项目。

因为graalvm貌似没有完善,所以说你得去https://central.sonatype.com/artifact/org.graalvm.buildtools/native-maven-plugin/overview看看native-build-tools的最新版本,他的samples里面的版本可能太新或者太老。

pom.xml示例

这里提供一个简单例子,Gradle更简单甚至有代码补全,就不贴出来了。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>GraalVM</artifactId>
    <version>1.0.0</version>

    <properties>
        <packaging>jar</packaging>
        <maven.compiler.source>22</maven.compiler.source>
        <maven.compiler.target>22</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jdk.version>22</jdk.version>
        <release.version>22</release.version>
        <mainClass>org.example.Main</mainClass> 
        <native.maven.plugin.version>0.10.2</native.maven.plugin.version>
    </properties>

    <repositories>
        <repository>
            <id>central</id>
            <url>https://repo.maven.apache.org/maven2</url>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.graalvm.buildtools</groupId>
                <artifactId>native-maven-plugin</artifactId>
                <version>${native.maven.plugin.version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>

    <pluginRepositories>
        <pluginRepository>
            <id>graalvm-native-build-tools-snapshots</id>
            <name>GraalVM native-build-tools Snapshots</name>
            <url>https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</project>

当正确导入后,右边就会出现native有关的插件选项

设置GraalVM环境变量

双击build大概率会出现以下错误

export PATH=/root/graalvm/graalvm-jdk-22/bin:$PATH
export JAVA_HOME=/root/graalvm/graalvm-jdk-22
export GRAALVM_HOME=/root/graalvm/graalvm-jdk-22

添加一下环境变量设置一下目录就好了。(可能需要重新启动一下IDE)

如果设置还是失败,那么打开您的IDE,按照下图设置一下环境变量?

接下来您就可以自由的运行您的GraalVM代码了,点击build(compile-no-fork)完成编译后,就可以原地运行了!(Windows在编译前会要求你配置WIndows SDK,为了良好开发体验,极其不建议使用WIndows平台!)

有时候你的代码已经更改但是直接Build却依旧构建的老版本的代码,是因为nativer::build 之前没有进行java::build , GraalVM是基于JVM字节码进行的AOT编译,而不是直接AOT(不可理喻)...