前言
最近在用java写一个桌面应用程序 ,遇到了很多错误,在网上也找了很多教程,但是感觉都不是很贴切或者说没有准确指出如何解决。这里就我遇到的一些问题,自己探索出的解决方案进行记录。
正文
JavaFX环境问题
这里简单介绍一下java和jdk的版本对应关系:
在早期的Java版本命名规则中,JDK的命名通常带有"1.x"的形式,而Java平台版本被称为"Java x"。这里"x"是代表主要版本号。从Java SE 5(也称作Java 1.5)起,正式版本名里的"1."开始逐渐被省略,并且数字"x"变得更加突出。
这里的规则是:
- 对于JDK 1.0到JDK 1.4,Java的版本号和JDK的版本号一致(例如:JDK 1.4对应Java 2 Platform)。
- 从JDK 1.5开始,实际的Java产品版本号转变为"Java x",而1.5成为了版本号的开发代号。实际产品名称上,"1."被省略,重点放在了主版本号上,即5、6、7等等。
因此,当我们说JDK 1.8时,实际上我们指的是Java SE 8平台的开发工具包。这种命名规则有助于区分早期的Java版本(例如JDK 1.2)和较新的版本(如Java SE 8,通常简称为Java 8)。
以下是详细的对应关系:
JDK 1.0 对应 Java 1
JDK 1.1 对应 Java 1.1
JDK 1.2 对应 Java 2
JDK 1.3 对应 Java 2
JDK 1.4 对应 Java 2
JDK 1.5 对应 Java 5 或 Java SE 5
JDK 1.6 对应 Java 6 或 Java SE 6
JDK 1.7 对应 Java 7 或 Java SE 7
JDK 1.8 对应 Java 8 或 Java SE 8
从Java 9开始,Java的版本直接标示为单一数字,而且没有前缀"1."了,即JDK 9、JDK 10、JDK 11等等,与Java SE版本号直接对应。
为什么我要介绍这个版本呢?因为我在写桌面程序的时候用到了JavaFX,但是java9把javafx取了出来 :
Java 9引入了模块系统,其中包括JavaFX。JavaFX不再是JDK的一部分,而是一个独立的模块。要在Java 9及以上版本使用JavaFX,需要在项目中显式添加JavaFX依赖。
经历过无数次的环境配置失败后,我决定不配置了,最后把jdk版本换成了1.8,然后程序运行正常了。只能说还是老版本对新手友好。
jar包视频运行异常
完成程序运行之后,我将程序导出jar包,但是在程序里面插入了一段视频,本来代码的思路是视频播放完成之后怎么这么做,但是运行jar包遇到问题:在视频播放完之后,程序就卡在了视频的最后一帧,没有了后续行为。但是在IDEA上运行就很正常。很疑惑,找了很多教程,发现很少有人遇到我这种问题,太难受了。
最后的解决方案是,既然检测不到视频视频是否播放完成,我代码的逻辑可以变成视频播放多少秒之后,程序怎么怎么样。修改了逻辑之后,jar包运行正常
exe4j图标问题
我尝试为自己的程序添加图标,这需要ico文件,网上有一些可以jpg转换成ico的网站,但是有些是真的恶心,这里就不贴出恶心的网站了,我说说怎么恶心吧:确实转成了ico文件,然后在exe4j中识别出了,但是在最后生成exe的时候显示ico文件有问题,搜了一些教程之后发现问题:无良网站作者就是给我们换了一个后缀名,这,,,只能说你这么玩,你写出来的网站有什么用?而且网站上面还有很多广告,虽然网站是免费的,但是还是忍不住吐槽。
这里推荐一个jpg转ico的免费网站:www.bitbug.net/
别人的电脑上面运行不了我生成的exe
这里的问题是因为在exe4j中配置jre文件没有使用相对路径,教程中都提到要用相对路径,但是怎么用?没人具体说,这里我们需要注意,前面已经配置了生成exe文件的地址,相对路径就是在这个地址下面:
这样生成的就不是一个单纯的exe文件了,而是多了一个环境,这样双击exe文件就可以正常运行了。
结语
希望这篇文章可以帮助到你,如果在这个过程中有什么问题,欢迎评论区留言。