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环境的电脑上使用了。
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 打包项目为jar文件 并运行 外部配置文件
- [教程] Jsmooth打包Jar生成exe文件,实现不装Java环境运行
- 如何使用JSmooth软件将java文件打包发布成exe文件,在没有jre环境的机子上运行(亲测有用)
- Jar 打包 EXE文件,可以脱离java环境运行 Jsmooth的使用
- 【深入JAVA】程序打包成Jar包运行并读取外部配置文件
- 如何把一个java程序打包成exe文件,运行在没有java环境里
- java 程序用exe4j 打包成exe,怎样在没有jdk环境电脑上运行
- Java程序导出成.jar文件、生成.exe可执行文件及打包成可执行安装程序(可在无Java环境的计算机上运行)--以个人所得税计算器为例
- 一、问题 MyEclipse怎么导出可运行的jar包。 二、测试环境 MyEclipse V8.6 三、操作过程 1、java项目没有导入第三方jar包的情况 这时候打包就比较简单: ①首先在MyE
- 将jar转换成exe,将jre一起打包生成Setup.exe,在没有jdk环境运行
- Java打包成jar文件,以及jar文件的运行+将jar文件导出为exe文件(看图说)
- Eclipse中Java项目打包——外部jar包位置 ,生成jar包位置,mf文件书写等问题
- 如何将java程序包打包成.exe文件,在没有安装jre的windows上运行
- 运行代码在MyEclipse中将JAVA项目打包成JAR文件
- 关于Java的socket服务端项目如何打包成exe文件运行在服务器上。
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行
- 'D:\android\ANDROI~1\tools\lib\\find_java.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- Eclipse中Java项目打包——外部jar包位置 ,生成jar包位置,mf文件书写等问题