巴拉巴

 找回密码
 立即注册

站内搜索

搜索
热搜: 活动 交友 discuz
查看: 80|回复: 0

有了GraalVM,Java也能编译EXE文件了,方便省事

[复制链接]

3

主题

6

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-4-6 14:18:29 | 显示全部楼层 |阅读模式
首先进入GraalVM官网
选择get started
进入页面后,选择Windows点进去
因为Java17是lts 长期支持版本,所以我们选择17、windows平台。注意这里是没有java8的,因为java8的GraalVM在oracle那里是要收费的,估计是实现上有些困难,然后老版本企业用的比较多缘故,有商业利益,所有没有java8的GraalVM,点击download
GraalVM下载完成,因为我这里是将其复制到G盘去了,所以显示被删除的样式,实际已经下载好了
下载好的GraalVM 解压后的GraalVM文件夹
接下来进入这个文件夹中
执行命令 gu install native-image
安装完成之后,你会在jdk bin目录下发现native-image.cmd这个文件,这是我们将jar包编译为exe文件必须要用到的程序
接下来使用idea64.exe 创建或者打开一个java项目,其中有一个类文件,项目非常简单,输出你好,世界这几个字符
maven插件这里我们需要做一些调整,首先是native-image-maven-plugin插件的设置方式
其次是maven-jar-plugin的设置方式,在这里指定主类
这个是maven-compiler-plugin的设置方式,指定executable为javac.exe的路径
最后是pom.xml文件中的一些属性的内容
idea右上角 选择maven项目 点选 lifecycle 中的 clean compile package 三个选项运行Run
执行成功后会在target文件夹下生成 对应项目名的jar包,注意这时是没有.exe文件的,.exe文件是我后面生成的
下面就是比较关键的几个点,第一先将cl.exe的路径 放入PATH环境变量中,注意要全64位的,不能出现任何x86的路径,选择 hostx64 x64这个路径放入path环境变量
之后我们直接运行会出现这个一个错误,不包括路径集,这里的意思就是只有cl.exe这个编译器,没有相对应的库,无法执行
也就是说仅有cl.exe路径是不行的,我们还需要INCLUDE 和 LIB 这两个环境变量,对应的其实是c c++ 的标准库,这里设置环境变量的操作需要一个一个的弄,麻烦些,注意路径对准你的版本就行了,INCLUDE 和 LIB都是环境变量名,就是和PATH是平级的
设置完成后应该是这样一个状态,我这里用的软件是RapidEE来设置的环境变量
完成后刷新一下桌面,或者重启电脑使环境变量生效,然后执行一下我红线框起来的命令行,你的和我不同,注意替换路径,这里的--no--fallback是不需要jvm就可以运行的意思,然后直接回车执行
在jar包的路径下会生成对应的exe文件名
回车执行,可以发现没有任何问题
文件的大小是在11.2MB左右,相当于一个java的helloworld的大小是11.2MB,注意我里面没有使用到任何dom4j的包,只是项目是这个名字而已。
最后是关于这个编译工具,我们需要用到的编译工具名字叫做Visual Studio 生成工具2022,当然Win7可以使用 生成工具2019或者其他版本的
其实就是这样东西,安装完之后,就会有cl.exe 以及刚刚环境变量中配置的那些路径了
以前一直觉得Java无法编译成EXE文件是一个硬伤,现在官方加入了支持,终于无需再使用如exe4j等第三方软件的支持了。如果你觉得这篇文章对你有帮助,可以点赞收藏加关注不迷路!

来源:http://www.yidianzixun.com/article/0nbMGoKJ
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 返回顶部