前言
使用 Kotlin 写了个小工具,想要发给不懂编程的朋友用,便想到将其先编译成 .exe 文件,搜了下应该是可以使用 Kotlin-native 或者 GraalVM 的 native-image 来编译。这篇文章里使用 IDEA 将程序打包成 jar 再使用 native-image 将 jar 编译成 .exe 文件。
一、思路
先使用 IDEA 将程序打包成 jar, 再使用 native-image-agent 来检测并收集代码运行时的依赖信息,记录反射和资源使用情况,生成并写入相关配置文件。最后用 native-image 编译时使用相关的配置文件。
二、前提
1. Prerequisites for Using Native Image on Windows
To start using Native Image on Windows, install Visual Studio and Microsoft Visual C++ (MSVC). There are two installation options: * Install the Visual Studio Build Tools with the Windows 10 SDK * Install Visual Studio with the Windows 10 SDK
You can use Visual Studio 2017 version 15.9 or later.
解释:
使用 native-image 需要安装Visual Studio相关的工具。有两个选项:
一、安装Visual Studio Build Tools 和 Windows 10 SDK
这是一个精简版的只包含了编译相关工具链的安装包,不包含完整的IDE。但已足够支持Native Image。
二、完整安装Visual Studio IDE,同时选择包含Windows 10 SDK
这是完整功能的IDE集成开发环境。
原因是Native Image编译器在Windows上需要借助Visual C++编译器和Windows SDK来生成本地代码。这需要相应的工具链支持。
所以简单总结下需要这两个选择中的一个:
1.Visual Studio Build Tools
2.Visual Studio IDE
以及Windows 10 SDK。有了这些工具链和系统开发包的支持,才能让Native Image顺利在Windows上工作。
2. 下载 GraalVM
官网下载地址
3. 系统变量的配置
略…
三、步骤
1. 使用 IDEA 或其他方式将代码打包成 jar
Project Structure (Ctrl + Alt + Shift + S) -> Artifacts -> + -> JAR -> From modules with dependencies… -> main class(选择主类) -> OK -> Apply -> 删除不必要的依赖 -> OK
Build -> Build Artifacts -> Build
2. 使用native-image-agent生成配置文件
以下操作的目录可自己选择,这里展示的是在 jar 所在目录中进行操作
在生成的 jar 所在的目录中创建META-INF/native-image文件夹(可省略;文件夹名也可改,但后面的命令中的路径也需要一并修改)
在jar包所在的目录下运行以下命令:注意替换 {jar包} 为前面打包生成的 .jar 文件
java -agentlib:native-image-agent=config-output-dir=META-INF/native-image -jar {jar包}
运行尽可能多的分支,然后结束程序,此时会在META-INF/native-image文件夹中生成配置文件
若一次运行不够,可以采用以下命令运行并自动合并配置文件:
java -agentlib:native-image-agent=config-merge-dir=META-INF/native-image -jar {jar包}
3. 使用native-image生成可执行文件
native-image --no-fallback -H:ConfigurationFileDirectories=META-INF/native-image -jar {jar包} {可执行文件名}
貌似GraalVM的native-image默认会生成依赖JDK的可执行文件,这样可执行文件必须在有JDK的环境下才能运行。
所以为了生成在其他没有JDK的机器上能执行的可执行文件,这里使用了 --no-fallback 参数禁用 fallback-image 的生成。文章来源:https://www.toymoban.com/news/detail-837235.html
应该有其他编译出不依赖JDK的纯native执行文件的方法,但我没有深入探究。文章来源地址https://www.toymoban.com/news/detail-837235.html
到了这里,关于使用 native-image 编译 Kotlin / Java 编写的小工具成 Windows 下 .exe 可执行文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!