上一篇文章 精简JRE - 实例Swing计算器 with 精简JRE 是在自己的电脑里进行测试的.
测试时只是将Java安装目录,改了个名为Java2;调试程序时再改回来.
于是学着写了个批处理文件:
@echo off
cd "C:\Program Files"
if exist Java2 (
rename Java2 Java
echo Java2 exist.
echo Java not exist. ) else (
if exist Java (
rename Java Java2
echo Java exist. ) else (
echo Java not exist. )
echo Java2 not exist.
)
@pause
后来发现测试程序时,直接设置path;高度程序时,则不设置path反倒更方便.
闲扯了些题外话....
本文主要介绍程序真正被移植到没安装JRE环境中出现的问题.
研究动机: 精简JRE并打包成exe文件的目的是想将Java程序更好的移植到没有事先安装JRE的XP系统中
因此,光在自己电脑上测试还是不行的,晚上试着将程序发到没装JRE的同学电脑上试运行,竟发现原来没有我想像的那么顺利(虽然事先有心理准备).
尽管之前拷贝程序所需要的类已经花了不少功夫,但是在实际操作中还是出现了ClassNotFoundException错误.
跟踪程序并将所缺失的类手动复制到之前精简的rt.jar中,复制的时候我发现都是形同AWTAutoShutdown$1.class的类文件缺失.
大家应该都知道这是AWTAutoShutdown类中的内部类被编译后生成的class文件.
猜测: 使用-verbose跟踪测试程序时,测试时某些内部类没有加载进来.(未深究)
由于不同的机器,硬件不同,Java底层处理图形图像的操作也不尽相同,所以出现在某些电脑中需要的类(特别是内部类)不同.看来没用到的内部类不能随便裁剪掉,最好保留(这是上一篇文章中提到类拷贝程序中未兼顾到).
改良办法:
1. 改良类拷贝程序,将相关的内部类一并拷贝出来.
2. 在未装JRE环境中再次调试,根据错误提示,将尚未拷贝到精简rt.jar中的类,手动拷贝出来,重新打包到rt.jar.
将因硬件不同而不同的类都加载进来才是最终的解决办法.
本人愚钝,不知道这些类的位置.望高手不吝 赐教.
程序打包成exe文件:
1. Java程序打包成exe文件
2. BatToExe方法
REM QBFC Project Options Begin
REM HasVersionInfo: Yes
REM Companyname: 可信软件与移动计算
REM Productname: 计算器
REM Filedescription: 计算器 - 爪哇哥
REM Copyrights: 爪哇哥
REM Trademarks: jarg
REM Originalname: Calucator
REM Comments:
REM Productversion: 1. 0. 0. 0
REM Fileversion: 1. 0. 0. 0
REM Internalname: Calucator
REM Appicon: C:\Documents and Settings\Administrator\桌面\j2exe\Calucator(Java打包成exe文件)\pic\ico.ico
REM Embeddedfile: C:\Documents and Settings\Administrator\桌面\jreDIY\Calucator.jar
REM QBFC Project Options End
@echo off
set path="./jre/bin"
start /b javaw -cp "./jre/lib" -jar Calucator.jar
@pause
start /b javaw实现控制台隐藏目的
在BatToExe中打开类似上述的bat文件,进行相应的设置,生成exe文件(具体步骤略).
在从未安装JRE环境中运行情况:
附件中的二个压缩文件在从未安装JRE的XP系统中测试过(计算器源程序来源于网络).
- 大小: 17 KB
- 大小: 29.8 KB
分享到:
相关推荐
NULL 博文链接:https://jarg.iteye.com/blog/868287
jadx-gui-1.4.6-with-jre-win.zip.cab
jadx-gui-1.1.0-with-jre-windows.zip。github速度太慢,下载这个备用。以防急用,又下载不完,急死人!!!
官网下载java运行环境,含32位、64位安装程序,压缩包内容包括: jre-8u231-windows-x64.exe jre-8u231-windows-i586.exe 官网下载速度较慢
(1)jre-8u301-linux-i586.rpm (2)jre-8u301-linux-i586.tar.gz (3)jre-8u301-linux-x64.rpm (4)jre-8u301-linux-x64.tar.gz (5)jre-8u301-macosx-x64.dmg (6)jre-8u301-macosx-x64.tar.gz (7)jre-8u...
jadx-gui-0.9.0-with-jre-win ,jadx-gui-0.9.0-with-jre-win ,jadx-gui-0.9.0-with-jre-win ,
jre-8u202-windows-x64.exe适用于Windows x64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中; 对于 2019 年 4 月 16 日开始的版本,Oracle JDK 许可协议已更改...
jre-7u9-windows-x64.tar,在官网下载的各位可以放心使用。
jre-8u152-windows-x64 jre-8u152-windows-x64 jre-8u152-windows-x64
jre-8u241-windows-x64.exe jre-8u241-windows-x64.exe jre-8u241-windows-x64.exe 避免官网下载,官网下载太麻烦了。
jre-8u202-windows-x64.tar.gz适用于Windows x64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中; 对于 2019 年 4 月 16 日开始的版本,Oracle JDK 许可协议已...
jre-8u371-windows-x64 1.8
jre-8u381-windows-x64.exe 2023
最新版本的jre-8u321-windows-i586.exe和jre-8u321-windows-x64.exe官网下载。
Oracle jre-8u341-windows-x64安装程序 sha256: 78f9cebd517a838138bedc8651e84f6a576b43f9e84f18bb0b2e3b84c7208e02 md5: 4b1dcc385b4efc8b5e51343210e423a2 Java 虚拟机 (JVM) 是一种虚拟机,它使计算机能够...
jre-8u241-windows-i586.exe jre-8u241-windows-i586.exe jre-8u241-windows-i586.exe 官网下载的,放心使用
jre-6u26-windows-i586
jre-8u202-windows-i586.exe适用于Windows x86 Offline 32位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中; 对于 2019 年 4 月 16 日开始的版本,Oracle JDK ...
Server JRE (Java SE Runtime Environment) 8u202,server-jre-8u202-linux-x64.tar.gz适用于Linux 64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中;...
jre-7u21-windows-x64