为啥我将java程序用exe4导成exe文件后程序上的图片显示不出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我将java程序用exe4导成exe文件后程序上的图片显示不出来相关的知识,希望对你有一定的参考价值。

程序调试的时候都还好好的,生成exe后图片就没了。图片包images放在了src下,图片的路径是./src/images/图片名.jpg,跟其他类包一起打包成jar的,应该没问题的啊。紧急求大神帮忙

要使用类的加载器加载图片才可以,直接使用路径编译的时候可以显示,但是使用exe4打包后就程序就会找不到图片的,具体请百度 java类的加载器或者ImageIo对象追问

那要怎么解决呢,是在生成exe文件时还是要修改源代码,能具体说一下吗

追答

在你的工程下的存放图片的文件夹右击指定为系统的资源文件夹 即resource文件夹

里面所有的图片才这样的加载方式
例如按钮背景图片加载

ImageIcon btn_icon = new ImageIcon(ImageIO.read(getClass().getClassLoader().
getResource("image/btnA.png")));
btn = new JButton(btn_icon);
。。。。。。。。
其他的图片加载方式和这个类似
这样处理后,打包的图片就会显示

参考技术A 打包的时候资源文件也要导出来,我的就没问题,你注意目录,我是放到打包程序的同目录下,建个目录追问

都导出来了,没有用的

参考技术B 图标难道不是用.icon或者.ico?追问

不是图标,是程序里面的图片

打包java程序生成exe

打包java程序生成exe

目标

我们知道c++的控制台程序编译运行以后就会生成一个exe可执行文件,在电脑上可以直接双击运行,但是java是跨平台的语言,编译运行以后的字节码文件.class是和平台无关的,所以有了想生成win下的java可执行文件的想法

准备

  • IDEA

    这个不用多说了吧,上一篇博客有提到,eclipse不会用,先就用IDEA吧

  • 第三方打包软件exe4j

    至于为啥叫这个名字我也不知道,这是一个很不错的,可以将jar包打包成exe文件的软件,具体用法后面讲,下载传送门
    技术分享图片戳那个箭头下载到电脑上,先别急着打开,这个软件不太好用

    开工

  • 打包java程序为jar包

    这里的jar包可以理解为不依靠平台(操作系统)存在的可执行文件,据说在win下jar包双击有一部分电脑也可以直接启动程序,但是我们的目标是生成exe,jar包是中间必须品

首先打开一个写好的java程序,右键project名字,选择Open Module Settings
技术分享图片
在打开的页面中点击Artifacts
技术分享图片
点击“+”号,根据下图提示依次点击
技术分享图片
定义主函数名为Main
技术分享图片
点击确认以后回到主界面,准备Build
技术分享图片
根据提示点击
技术分享图片
好了,现在在你的项目文件夹的out目录下找找就能找到jar包了,当然,你可以试试双击会怎样,貌似我的电脑是可以直接运行了,但是因为某些需求,要生成exe的,所以我们继续

  • 打包jar包为exe

    启动以后,第一步就是破解,这里粘一个别人的博客,我破解的网址找不到了,这个应该也能用传送门
    破解以后是这个样子
    技术分享图片
    点左边的project type,选择我们想要的功能
    技术分享图片
    点左边的下一个框,在右边输入想生成的文件名,选择生成路径
    技术分享图片
    点左边的下一个框,再次在右边输入文件名
    技术分享图片
    点击左边当前框的32-bit or 64-bit,勾选出来的提示框
    技术分享图片
    点击左边的下一个框,点击如图的+号,选择第一步操作生成的jar包
    技术分享图片
    选择以后确定
    技术分享图片
    回到刚才的页面,点...选择主函数Main
    技术分享图片
    点击左边的Jre框,在最低版本那里填1.6,然后点next
    技术分享图片
    导入jre,这之前把默认的后两个删除,再点击+号
    技术分享图片
    选择你电脑jar包的目录
    技术分享图片
    然后点击finish就可以啦!!,大功告成,开始奔放

    后记

    exe4j操作不太方便,其他的都挺好的,至于为什么非要执着要exe文件,是因为想在c++程序里用system执行外部程序,但是貌似system终究是和cmd有区别的,用cmd可以执行jar,,,噗,但是system不行,当然用了exe就肯定可以啦
    2018/12/16 15:21:41

以上是关于为啥我将java程序用exe4导成exe文件后程序上的图片显示不出来的主要内容,如果未能解决你的问题,请参考以下文章

使用exe4j将java项目打成exe执行程序

exe4j如何利用exe4j把java桌面程序生成exe文件

JAVA程序打包为EXE

Java编程成exe后不能在别的机器上运行

打包java程序生成exe

错误记录exe4j 导出的 exe 可执行程序乱码 ( Configure Java Invocation VM Parameters 配置 -Dfile.encoding=GBK 编码 )