`
yeshaoting
  • 浏览: 684635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

精简JRE - 实例Swing计算器 with 精简JRE(续)

阅读更多

 

 

上一篇文章 精简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
分享到:
评论
5 楼 DOCDOC 2011-01-12  
yeshaoting 写道
Kisses99 写道
个人意见,这就是穷折腾。
不保持JRE的完整性,得不偿失。


本人尚且只是一个初级程序员,个性愚钝,还不能理解JRE完整性的意义.
可能真的以后会意识到这点.现在只是觉得如果在将一个7KB的计算器给用户的同时,还需要他们安装90+MB的JRE,设置环境变量,我想人家一定整崩溃了.

在很多高级程序员眼里其实我们这些初级程序员做得很多事都是在穷折腾.
如果能换个角度思考的话,我们是在探索.

7KB的计算器要装4M的JRE,呵呵,50步笑百步哦
做桌面,老老实实用.NET或C++&Qt吧
4 楼 yeshaoting 2011-01-12  
oznyang 写道
顶ls,只要能运行,管完完不完整,版本更新的时候一起带上,比要去更新jre方便
lss那位实在是打击人了,人家研究半天弄出来的被你一个个人意见就否定了
yeshaoting 写道
Kisses99 写道
个人意见,这就是穷折腾。
不保持JRE的完整性,得不偿失。


本人尚且只是一个初级程序员,个性愚钝,还不能理解JRE完整性的意义.
可能真的以后会意识到这点.现在只是觉得如果在将一个7KB的计算器给用户的同时,还需要他们安装90+MB的JRE,设置环境变量,我想人家一定整崩溃了.

在很多高级程序员眼里其实我们这些初级程序员做得很多事都是在穷折腾.
如果能换个角度思考的话,我们是在探索.



哈哈,谢谢oznyang的支持.
我跟你想法是一样一样的.

每个人关注的方面不同,并且能做的事情大小也不同.
现在我们老师让看讨厌的英文论文,闲暇之时就试着逐步做点跟虚拟机有关,跟底层有关的探索.

Kisses99也说的是个人意见,是很好的忠言.
在此感谢~
3 楼 oznyang 2011-01-12  
顶ls,只要能运行,管完完不完整,版本更新的时候一起带上,比要去更新jre方便
lss那位实在是打击人了,人家研究半天弄出来的被你一个个人意见就否定了
yeshaoting 写道
Kisses99 写道
个人意见,这就是穷折腾。
不保持JRE的完整性,得不偿失。


本人尚且只是一个初级程序员,个性愚钝,还不能理解JRE完整性的意义.
可能真的以后会意识到这点.现在只是觉得如果在将一个7KB的计算器给用户的同时,还需要他们安装90+MB的JRE,设置环境变量,我想人家一定整崩溃了.

在很多高级程序员眼里其实我们这些初级程序员做得很多事都是在穷折腾.
如果能换个角度思考的话,我们是在探索.

2 楼 yeshaoting 2011-01-12  
Kisses99 写道
个人意见,这就是穷折腾。
不保持JRE的完整性,得不偿失。


本人尚且只是一个初级程序员,个性愚钝,还不能理解JRE完整性的意义.
可能真的以后会意识到这点.现在只是觉得如果在将一个7KB的计算器给用户的同时,还需要他们安装90+MB的JRE,设置环境变量,我想人家一定整崩溃了.

在很多高级程序员眼里其实我们这些初级程序员做得很多事都是在穷折腾.
如果能换个角度思考的话,我们是在探索.
1 楼 Kisses99 2011-01-12  
个人意见,这就是穷折腾。
不保持JRE的完整性,得不偿失。

相关推荐

    精简JRE - 实例Swing计算器 with 精简JRE

    标题 "精简JRE - 实例Swing计算器 with 精简JRE" 提供了两个主要知识点:一是关于Java的精简版运行时环境(JRE),另一个是使用Swing构建的计算器应用。 1. **精简JRE**: Java运行时环境(JRE)是执行Java应用...

    jadx-gui-1.4.6-with-jre-win.zip.cab

    jadx-gui-1.4.6-with-jre-win.zip.cab

    jre-8u301.zip

    (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-1.1.0-with-jre-window.zip

    首先,"jadx-gui-1.1.0-with-jre-windows.zip"是jadx-gui的Windows版本,包含了jadx-gui的1.1.0更新,并集成了Java运行环境(JRE),这意味着用户无需单独安装JRE即可运行此软件。这在遇到网络速度不佳时,提供了...

    jre-8u231-windows-x64/jre-8u231-windows-i586

    标题中的"jre-8u231-windows-x64"和"jre-8u231-windows-i586"指的是Java JRE的特定版本,这里的"8u231"表示的是Java 8的更新版本号231,"windows"则表明这是为Windows操作系统设计的。"x64"代表64位系统,而"x86"或...

    jre-7u9-windows-x64

    标题“jre-7u9-windows-x64”指的是Java Runtime Environment(JRE)的第7个主要版本的第9次更新,专为64位Windows操作系统设计。JRE是Oracle公司提供的Java平台的核心组件,它包含了运行Java应用程序所需的全部环境...

    jre-8u202-windows-x64.exe

    jre-8u202-windows-x64.exe适用于Windows x64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中; 对于 2019 年 4 月 16 日开始的版本,Oracle JDK 许可协议已更改...

    jre-6u21-windows-i586

    标题“jre-6u21-windows-i586”所指的是一款针对Windows操作系统,32位(i586)平台的Java运行环境(Java Runtime Environment,简称JRE)的更新版本,具体为6u21版。Java运行环境是运行Java应用程序所必需的基础...

    jadx-gui-1.2.0-with-jre-win.zip

    【标题】"jadx-gui-1.2.0-with-jre-win.zip"是一个针对Windows平台的Android APK反编译工具包,包含了jadx-gui的1.2.0版本和Java运行环境(JRE)。 【描述】该工具的主要功能是帮助开发者或安全研究人员对Android...

    jre-8u241-windows-x64.exe

    jre-8u241-windows-x64.exe jre-8u241-windows-x64.exe jre-8u241-windows-x64.exe 避免官网下载,官网下载太麻烦了。

    jadx-gui-1.1.0-with-jre-windows.zip

    标题中的“jadx-gui-1.1.0-with-jre-windows.zip”指出这是一个针对Windows操作系统的软件包,包含jadx-gui的1.1.0版本,并且集成了Java运行环境(JRE)。jadx-gui是一款流行的反编译工具,特别适用于Android应用...

    jre-8u202-windows-x64.tar.gz

    jre-8u202-windows-x64.tar.gz适用于Windows x64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中; 对于 2019 年 4 月 16 日开始的版本,Oracle JDK 许可协议已...

    jre-8u152-windows-x64

    标题“jre-8u152-windows-x64”指的是Java Runtime Environment(JRE)的特定版本,这是Oracle公司提供的用于执行Java应用程序的软件组件。这个版本是8u152,意即Java 8的第152次更新,针对Windows 64位操作系统。...

    jre-windows-java环境.rar

    在给定的压缩包"jre-windows-java环境.rar"中,包含了针对Windows操作系统的Java环境安装文件以及一个使用教程,帮助用户在他们的计算机上设置和使用Java环境。 1. **Java虚拟机(JVM)**:JRE的核心部分是Java...

    jre-8u401-windows-x64

    jre-8u401-windows-x64

    eclipse-temurin-alpine-jre-17

    eclipse-temurin官网下载的eclipse-temurin-alpine-jre-17

    jre-7u17-windows-i586

    "jre-7u17-windows-i586"这个标题表明这是一个针对Windows操作系统32位(i586架构)的Java 7 Update 17版本的JRE安装包。这个版本的发布旨在为用户提供了运行基于Java技术的应用程序所需的运行时环境。 Java是一种...

    jre-8u371-windows-x64 1.8

    jre-8u371-windows-x64 1.8

    jre-7u21-windows-x64.rar

    标题“jre-7u21-windows-x64.rar”指的是Java Runtime Environment(JRE)的版本7更新21的64位Windows版的压缩文件。JRE是Oracle公司提供的用于执行Java应用程序的软件环境,它包含了Java虚拟机(JVM)、类库和其他...

    server-jre-8u202-linux-x64.tar.gz

    Server JRE (Java SE Runtime Environment) 8u202,server-jre-8u202-linux-x64.tar.gz适用于Linux 64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中;...

Global site tag (gtag.js) - Google Analytics