`

精简jre包

    博客分类:
  • Java
 
阅读更多

精简jre简单教程,本文来自转载

写一些swing小程序,需要附带一个很大的jre文件夹,显然这是不现实的,使用起来也不方便,当然如果电脑有java环境就不需要这样,但是如果没有java环境,那么就需要jre了,更需要一个精简的jre。

网上有很多教程,大家可以自行网上搜索,实践才是检验真理的唯一标准,上手先!

首先,我们需要一个完整的java项目,这里我是使用了Javaswing项目作为示例,为了更加真实,导出jar,使用exe4j将jar变成exe,添加jred时候选择同级目录下jre,并改名为“jre”,java版本1.8。

至于如何使用exe4j请见https://blog.csdn.net/rico_zhou/article/details/79868129

或者自行网上搜索。

先来看一下完整的jre,上图

 

主要是两个文件夹bin和lib,bin目录包含了java虚拟机以及各种执行程序,lib则包含了运行环境所需要的类库资源。

这两个目录都需要精简,精简前bin大概80m,lib大概95m,精简后整个jre可以达到40m甚至更小。

一,精简bin目录

首先将jre复制到jar包或者exe程序同级目录,尽量不操作系统的jre,运行打包好的可执行jar包,或者双击exe,注意,运行jar的命令不是直接 java -jar xxx.jar,这样会使用系统的jre,应该这样,cd到复制的jre目录(也就是exe和jar所在目录)

命令:jre/bin/java.exe -jar xxx.jar

这样使用的是复制的jre,或者直接双击exe(前提是打包的exe使用的环境也是复制的jre)。

程序运行后,我们直接到jre/bin目录下删除所有能删除的文件及文件夹,接下来停止程序,再次同样方法启动程序,如能正常工作则进入下一步精简,如果不能正常运行,比如我使用的是swing程序,发现不能运行,则需要把刚刚删除的某些文件再还原回来,比如javaw.exe,javaws.exe,以及各种dll文件,重复上述步骤直到程序能够正常运行,也可以反过来一个或者多个文件删,直到最佳,虽然麻烦但是保险一些。

精简后bin大概10m左右。

 

二,精简lib目录

lib目录主要精简rt.jar这个jar包,足足有50m,接下来参考一篇文章,详见此

https://blog.csdn.net/xiaoping8411/article/details/6973887(链接特此说明),也可以百度查看其它文章,网上有很多,主要的思路就是使用命令将程序运行所需要的类都下载下来,然后挨个筛选,命令如下

  1.  
    @echo off
  2.  
    set path=%cd%\jre\bin
  3.  
    java -jar -verbose:class ScreenShot2.0.jar >>class1.0.txt
  4.  
    pause

放入bat文件双击运行即可,注意此时尽量要运行程序的所有分支,尽量将用到的类下载下来。然后按照上述文章将rt.jar解压,运行代码导出新的rt文件夹。

我导出的rt文件夹如下

然后就是使用命令将rt文件夹重新打包成jar包,

jar cvf rt.jar -C rt\ .

注意rt\后面有一个空格和点

 

完成后大概只有几兆大小了,将新的rt.jar复制到jre/lib下替换,运行尝试是否报错,与上述方法一样,挨个尝试尽量精简lib目录,最后如下

这时候基本精简差不多了,整个jre大小也只有20m左右,但是当你运行程序的时候,有时候会出现一些错误,这时候可能就是缺少类,也就是之前尽量下载所有运行类的步骤没有完全达到效果。

解决办法1:

命令运行jar或者运行exe,操作程序直到出现错误,如图所示错误

显然是缺少类,基本上缺少的都在rt.jar中,于是到原rt文件夹,目录rt/com/sun/imageio/plugins.jpeg,找到所有相关的JPEG开头的类,复制到新生成的rt对应文件夹下,然后重新命令打包rt成rt.jar

再次运行程序,如此反复,直到不再出错,因为只有在运行需要的时候才能加载查找到类,所以难免有所缺失,比较麻烦。

解决办法2:

直接把原始解压的完整的rt文件夹重新打包成rt.jar,这样内容没有变,但是大小缩小了一半,只有20兆左右,总的jre大小40m左右,这样也算是瘦身了。

附上已精简jrehttps://github.com/ricozhou/cutjre

分享到:
评论

相关推荐

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

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

    精简版jre.zip 64位 1.8.0压缩后才20M

    - 教学环境:对于初学者,无需安装庞大的Java开发工具包(JDK),仅安装这个JRE即可运行学习项目。 - 低配置设备:在内存和硬盘空间有限的设备上,精简版JRE提供了运行Java程序的可能性。 5. **文件结构**: ...

    精简jre步骤 迷你jre制作过程

    精简jre步骤 1. 拷贝一个完整版的jre文件夹到D盘 2. 删除jre目录下所有出bin和lib目录的所有文件或目录 3. 打开cmd窗口,设置path路径为空,转到D:\jre\bin目录,运行java –version。正常显示当前Java的版本。 4. ...

    exe4j+精简jre实例

    笔者精简了jre,并给出一个可用实例,笔者有一个java项目,已经对jre进行精简,制作了可执行包,从140M减到了20M,在精简jre的过程中,笔者也写了一些脚本和代码,旨在过程化该解决方案, 但是由于使用了exe4j,而...

    Java 打包jar生成exe(极限精简完全攻略)

    当面对企业级用户时,虚拟机安装这根本就算不上问题,布署之类事宜本就有专人负责,我们踏踏实实写代码就好,精简JRE之类的琐事与我何干?或者说,根本就不存在精简它的必要,又何必想要去精简呢? 然而,当你的...

    Jre8精简基础镜像包

    制作 docker 精简 jre8 基础镜像,基础镜像为bitnami/minideb,jdk8u321版本,已解决httpclient中文乱码和webservice-client缺包问题。

    精简JRE(windows32位和64位,linux 32位和64位)

    精简JRE的主要目的是减少安装包的大小,提高下载和部署的效率,同时降低运行时的内存占用。在JRE中,rt.jar是最核心的库文件,包含了Java标准类库的所有类。通过对rt.jar进行精简,可以移除那些不常用或者特定应用...

    精简 jre 效果程序

    - **定制需求**:某些应用可能只需要特定的Java功能,精简JRE可以只包含这些必要的部分。 - **安全性**:减少不必要的组件可以降低潜在的安全风险。 3. **精简方法**: - **选择性安装**:通过定制安装,仅安装...

    精简JRE第二步 ─ 精简lib目录

    然而,标准的JRE安装包相对较大,对于某些只需要特定功能的应用场景,如服务器部署、嵌入式系统或者物联网设备,精简JRE可以有效地减小资源占用,提高运行效率。本篇文章将深入探讨如何精简JRE中的"lib"目录,以满足...

    超级精简版的jre

    标题中的"超级精简版的jre"指的是对标准JRE进行优化和裁剪,移除了不必要的组件和服务,以实现更小的体积、更快的启动速度以及更低的资源消耗。 精简版JRE通常是为了满足特定应用场景的需求,比如嵌入式设备、低...

    Java Portable 1.8.0.181 绿色便携精简JRE & JDK &

    Java Portable 1.8.0.181 绿色便携精简JRE, jPortable在线安装后提取版。最大化保持功能版。7z压缩后44M解压后162M。可配合便携版360极速浏览器,firefox等浏览器使用,使便携式java随时可用

    制作桌面软件exe执行文件和精简jre步骤.zip

    在IT领域,特别是Java开发中,经常需要将应用程序...总结,将Java应用程序转化为exe并精简JRE,既方便了用户,也优化了软件性能。通过使用恰当的工具和方法,可以实现这一目标,同时需要注意各种技术细节和合规问题。

    精简jre最新版

    "精简jre最新版"指的是针对Java运行环境的一个轻量级版本,这个版本进行了优化,删除了一些不必要的组件,以减小安装包的大小。在描述中提到,它支持Swing组件,这意味着用户依然可以使用Java的图形用户界面(GUI)...

    精简版本jre

    "精简版JRE"是为了满足特定需求而定制的一个轻量级版本,它去除了标准JRE中的一些非必需组件,以减小体积,提高运行速度,降低系统资源消耗。 精简版JRE的主要特点: 1. **体积小巧**:相比完整版JRE,精简版删除...

    精简Jre和Jsmooth

    "精简JRE"通常指的是为了减少安装体积、提高运行速度或者针对特定应用需求而定制的JRE版本。这种定制化的过程可能包括移除不必要或冗余的库、插件和服务,使得JRE更加轻量化,适用于那些对系统资源有限制或有特定...

    对jre包里的rt.jar精简

    对jre包里的rt.jar精简,第一步:解压工具.rar,第二步:把你打包的jar小项目放到同一文件夹里。第三步:cmd,运行命令javaw -Dfile.encoding=utf-8 -jar GreenJVMMake.jar -t da -i ./mytest.jar -o ./ 执行后可以...

    精简jre的利器autojar

    Autojar是一款非常实用的工具,主要用于自动化Java应用程序的打包过程,特别是对于那些需要精简JRE(Java运行环境)的项目,它能帮助开发者极大地减少最终部署包的大小。 Java应用程序通常依赖于大量的库文件和JRE...

    jre精简工具及教程

    精简JRE的过程主要涉及到以下几个步骤: 1. **理解JRE组成**:JRE包含了基础的JVM、Java核心类库(如rt.jar)、本地库(如lib目录下的各种DLL或so文件)以及其他支持文件。开发者需要识别出哪些组件是程序运行所...

    jre1.8 64位精简精版.zip

    在部署SWT/JFace应用时,使用这样的精简JRE有几个优点: 1. **更快的下载速度**:对于用户而言,下载小体积的JRE意味着更快的安装过程。 2. **节省磁盘空间**:对于系统资源有限的设备,精简版JRE可以有效减少存储...

    jre精简工具(附详细教程).

    精简JRE通常涉及以下步骤: 1. **选择精简工具**: - 工具如`jlink`是Java 9及更高版本自带的命令行工具,用于创建定制的运行时图像。它允许用户选择需要的模块并生成自定义的JRE。 - `jpackage`是Java 14引入的...

Global site tag (gtag.js) - Google Analytics