您的位置:首页 > 产品设计 > UI/UE

Java GUI项目读取Jar内部外部文件 打包EXE 在没有java环境的电脑上可运行

2016-12-23 12:17 1961 查看
本文记录我最近一个业余swing swt项目中遇到的问题及解决办法,主要问题有三点:

1. Jar包内部外部文件读取问题

2. 打包为EXE问题

3. 在没有java环境的电脑上使用问题

1. Jar包内部外部文件读取问题

通常项目中会用到图片文件、音乐文件、配置文件等,这些文件除了配置文件一般放在jar包外部,其他文件一般导出Jar时都放在Jar内部,这时你会发现本来在Eclipse运行好好的,导出后Jar却经常出错,读取不到文件或者路径错误。这里提供解决办法:

读取外部配置文件,请将配置文件放在Jar同级目录中,然后使用以下方式读取:

private String confPath = System.getProperty("user.dir") + "\\conf.properties";
//读取配置文件
InputStream in = new BufferedInputStream (new FileInputStream(confPath));
prop.load(in);
in.close();



然后要读取Jar内部的图片、音乐等文件,这些文件放在Jar内根目录下,使用以下方式:
try {
img = ImageIO.read(App.class.getResourceAsStream("/imgs/"+index+".jpg"));
} catch(IOException e) {
e.printStackTrace();
}

另外播放音乐,建议还是使用audio类,虽然只支持wav等格式,有点局限,但是好控制一些,可以通过百度音乐将mp3格式转换为wav格式。
try {
// 1.wav 文件放在java project 下面
FileInputStream fileau = (FileInputStream) App.class.getResourceAsStream("/tt.wav");;
as = new AudioStream(fileau);
AudioPlayer.player.start(as);
} catch (Exception e1) {
e1.printStackTrace();
}

2. 打包为EXE问题

首先导出为Jar包,注意要选择程序入口,即main。

然后使用exe4j软件进行打包,教程可以网上找,注册后不会弹出烦人的提示框。

要注意的主要是如果用的64位Java,打包时需要选择64位。



如果使用了第三方Jar在选择包时除了自己项目导出的Jar包外,把第三方包也要加上,然后下面选择程序入口主类时选择自己的主类就是。



3. 在没有java环境的电脑上使用问题

这个需要将Jre也一起发布,但是Jre实在太大了,有100多兆,这样发布程序太臃肿。因此要进行Jre精简,具体精简方法可以网上找,一般使用可以找个精简的Jre下载下来使用。

我用的Jre7的64位精简版,大概20多兆,不算特别精简,但是比较均衡。这里提供下载地址:

Jre7的64位精简版下载地址

将下载的Jre在导出的Jar同级目录建个Jre7文件夹并解压进去,然后在选择Jre Sequence时,选择这个文件夹。



后面打包成EXE之后,要将Jre7文件夹,EXE文件,还有用到的外部配置文件一起发布出去,就可以在没有java环境的电脑上使用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java eclipse exe jar swing
相关文章推荐