欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

精简JRE - 实例Swing计算器 with 精简JRE(续) 博客分类: 程序打包 SwingQtXP.netExcel 

程序员文章站 2024-02-26 11:14:52
...

 

 

上一篇文章 精简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 - 实例Swing计算器 with 精简JRE(续)
            
    
    博客分类: 程序打包 SwingQtXP.netExcel 
 
精简JRE - 实例Swing计算器 with 精简JRE(续)
            
    
    博客分类: 程序打包 SwingQtXP.netExcel 
 

附件中的二个压缩文件在从未安装JRE的XP系统中测试过(计算器源程序来源于网络). 

   

  • 精简JRE - 实例Swing计算器 with 精简JRE(续)
            
    
    博客分类: 程序打包 SwingQtXP.netExcel 
  • 大小: 17 KB
  • 精简JRE - 实例Swing计算器 with 精简JRE(续)
            
    
    博客分类: 程序打包 SwingQtXP.netExcel 
  • 大小: 29.8 KB