近期由于项目需要,需要把之前的matlab程序打包成exe可执行文件或者jar包,真的是,心,力,交,瘁,我把近两天打包遇到的各种奇葩问题在这里总结一下:
- 代码中尽量避免出现中文,无论是注释也好还是程序里,因为真的,真的,很容易出问题
- 打包成exe文件时,可以选择下载matlab提供链接里官方的VC,也可以选择安装VS6.0++(至于如何安装,这又是另一番学问了,但是时间过得有点久,好多忘了)
- 打包成jar包时,如果出现目录权限拒绝,unable to open file等问题,可能是你的存放产生jar包的文件路径有中文(很奇葩对不对,对不对,我能检查出来也是狗屎运)
- 打包成jar包时,如果出现An error occurred while shelling out to javadoc (Error code = 1). Unable to build executable;这样的问题,(注意与第5点区分开来)多半是因为你的jdk版本较高,如果你是jdk 1.8.0或者jdk 1.7.0或者以上版本,请选择jdk1.6的版本安装(安装前记得把之前的jdk卸载点,安装后记得修改环境变量)
这里插一句如何卸载jdk:控制面板—>程序卸载,然后卸载jdk有关的插件。 - 打包成jar包时,如果出现Error: An error occurred while shelling out to javac (error code = 1).Unable to build executable;这样的问题(注意与第4点区分开来),那你已经成功了一半了,javac.exe文件用来编译使用的,这个问题出现是因为你的环境变量配置有问题。你可以在cmd命令行中输入javac,如果出现错误,就说明你的环境变量配置有问题,具体jdk怎么配置,就需要大家自行百度了
- 打包成jar包时,如果出现Failed to embed unzip in your applicationUpdate resource failed: 00000000CE555B5,Failed to embed installer splash screen C:Program FilesMATLABR2014aoolboxcompilerResourcesdefault_splash.webp. Update resource failed: 0000000037E55CB0 ,这类问题,首先恭喜你,编译这一关已经过去了,这个问题出现是因为你的RAM空间不够使用,我在matlab官网找到的答案是:This error can also occur in cases where RAM size is more than 4GB, shutting down processes and freeing RAM space can resolve the issue;所以解决方法是,关掉程序,清理一下RAM空间。
- 打包后的exe文件或者jar包需要在安装MCR(matlab compiler runtime)的环境中才能够使用,这个很好获得,你不安装它也会提醒你的
- 如果以上问题你都没有遇见,而是遇见了其他的问题,那么我的建议是:先祈祷三秒,然后重启一下电脑试试
以上问题以及解决方法基于经验获得,不一定准确,如果有错误地方,希望大家指正,谢谢。
另外,关于调用jar包以及exe文件的注意事项,之后再补
还有就是,如果你的exe文件中有使用数据库的地方,比如链接数据库等操作,很有可能会报错,这是因为你的jdbc驱动在这里不好使,至于解决办法,我要是知道了也不会学习怎么打包成jar包了,如果有人知道,也烦请指导一下,谢谢啦
这个问题终于解决了:补上一个链接
关于matlab程序打包成的EXE文件或者jar包中访问MySQL数据库的问题