赞
踩
最近用javafx写了一个小游戏,写成之后便想实现程序的打包,使用更方便且可以跨平台使用,即使安装的电脑上没有java环境,程序也可以正常运行。
在实现这一功能的过程中也是遇到了很多问题,耽误了一个晚上的时间,所以当我成功实现打包的时候,就想把自己的一些新的认识写下来,相信也可以帮助一些人。在我学习的过程中,我在网上看到了大概三种打包的方式,分别为:
我之所以使用ant的方法,一方面是该方法是我学习的教程所采用的方法,另一方面是因为该方法是仅使用eclipse便可完成的。虽然使用的过程中有很多错误,困扰了很久,但实现该流程之后,仍然感觉这是非常便捷的一种方法,掌握之后,完成一次打包应该不会超过20分钟。
该流程是教程https://code.makery.ch/library/javafx-tutorial/part7/的细化版,大家共同阅读效果更好。
build.fxbuild是javafx project的原生文件,用户可以在这个文件中设计生成的exe(也可生成其他文件,比如msi,dmg等)的供应商名称、应用名称、版本以及主程序。
在修改build.fxbuild前需要统一该项目使用的jdk版本,统一需要确定两个地方,分别为preference->Java->Compiler->Compiler compliance level和preference->Java->Installed JREs level,这两处要选择同一版本,其中后者虽然是Installed JREs level,但该项需为安装目录中的jdk文件夹而非jre文件夹,附图说明,此处应选择红框标注的文件夹。
以下为preference->Java->Compiler->Compiler compliance level和preference->Java->Installed JREs level的图片说明。此处我虽然选择了JDK1.8版本,但JDK10应该也是没有问题的,不过我并没有做测试。
该表中带星号行为必填项,填完不要忘记选择打包的格式(Packageing Format),最后选择右方的Generate ant build.xml only,项目的文件夹中会出现新的子文件夹build,build包含文件build.xml即生成成功。
在生成build.xml后,运行build.xml之前,记得按照教程中的步骤,将resources文件夹移到build中。
在整个尝试打包的过程中,运行build.xml文件->报错->修改->再运行这个过程是用时最久的步骤。我在这个过程中遇到了好几种报错信息,但其实最后发现只要JDK和环境变量设置正常并不需要修改build.xml文件。下面列一下报错信息和解决方法吧(运行build.xml方法以及一些操作方法在上边发的教程里有,结合看会更好)。
Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.
在我的情况中,这个报错是因为对于需要的两个jar包在指定目录找不到。附图说明。
在我最开始的项目中,我安装的jdk1.8中并没有所需的jar文件ant-javafx.jar和jfxrt.jar,之后我卸载了旧版jdk1.8,安装了最新的jdk1.8,解决了这个问题,重要的一点,安装新的jdk后注意修改环境变量中的路径,附安装新版jdk说明文章(他人文章)https://blog.csdn.net/qq_39915585/article/details/82423761,文章中cmd中命令javac的结果于命令java的运行结果类似,若出现无效命令的说法,则为环境变量安装不正确,解决方法附他人一篇文章https://blog.csdn.net/love_xiaoshaung/article/details/80954492?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase。
环境变量的存储是以“;”分隔的,比如要存储上述文章中的CLASSPATH 是“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”不要忘记前面的“.”和“;”,在图一中直接将引号中的内容复制在第二框里,但在图二里要一条几条写进去且不带“;”。
(图一)
(图二)
javac: 无效的目标发行版: 10
这个问题我在搜索过程中有很多回答是因为使用maven导致了这个问题,但我这里并不是这样。说来惭愧,产生这个问题是因为我在生成build.xml文件之后修改了JDK版本,修改之前,我使用的是JDK10,而build.xml中实际上有JDK版本的记录,所以产生冲突,附图说明。
另外一个很重要的地方同时也可能引起这个问题,运行build.xml文件时要设置External Tools Configurations…,修改位置右键点击build.xml->Run as->External Tools Configurations…->JRE->Seperate JRE,此处要使用Seperate JRE,注意与preference的JDK版本保持一致。
总的来说,使用ant打包程序还是比较方便的,第二次打包只需要2分钟即可,且只要不更换JDK版本,打包新的程序也非常快,因此优势还是很明显的,缺点就是第一次会遇到很多问题。
最后希望这篇文章可以帮到大家,如有疑问欢迎继续提问,如果有帮助,可以更新在文章中,非常感谢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。