【开发环境】JRE 裁剪 ① ( 裁剪 bin 目录下的 dll 动态库文件 )

news/2024/11/19 10:42:00/

文章目录

  • 一、JRE 裁剪
  • 二、裁剪 bin 目录下的 dll 动态库文件

参考博客 :

  • 精简jre1.8
  • 精简jre步骤
  • 裁剪JRE(嵌入式设备的java环境移植)

资源下载地址 : https://download.csdn.net/download/han1202012/87388400





一、JRE 裁剪



在 【IntelliJ IDEA】使用 exe4j 生成 jre + jar 可执行文件并在 Windows 上执行 ( 不安装 jre 执行 java 程序 ) 博客中介绍了使用 exe4j 工具将 Java 程序封装成了可以在 Windows 中执行的 exe 程序 ;

封装完成后 , 大小 190MB 左右 , 主程序只有 1.7 MB , JRE 占了 190MB , 这里需要对 JRE 进行裁剪 ;
在这里插入图片描述

执行 " JRE裁剪示例.exe " 可执行文件 , 即可弹出命令行窗口以及 AWT 界面程序 ;

在这里插入图片描述

JRE 裁剪分为三步 :

  • 第一步 : 裁剪 bin 目录下的 dll 动态库文件 ;
  • 第二步 : 裁剪 lib 目录下的 jar 文件 ;
  • 第三步 : 裁剪 rt.jar 文件 ;




二、裁剪 bin 目录下的 dll 动态库文件



下载 Process Explore 工具 , 我已经将该工具上传到了 CSDN 的资源中 , 可以 0 积分下载 ;

下载地址 : https://download.csdn.net/download/han1202012/87388400


首先 , 启动 " JRE裁剪示例.exe " 程序 ;

然后 , 运行 Process Explore 工具 , 选中 " JRE裁剪示例.exe " 进程 , 然后使用 " Ctrl + D " 快捷键 , 点击下方的 " Path " , 将下方的内容按照名称进行排列 , 在最下方可以看到 该进程 运行时 用到的 dll 动态库 ;

在这里插入图片描述
最后 , 进入 jre 的 bin 目录 , 点击 " 名称 " , 将文件按照名称排序 ;

在这里插入图片描述

开始尝试依次删除文件 , 然后测试程序是否还可以正常运行 ;

按照名称 , 逐个删除 ;

先处理目录文件 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\client\jvm.dll ,

下面的 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\client 目录中 , 保留 jvm.dll 文件 , 删除其它文件 ;
在这里插入图片描述

删除后 , 程序正常执行 , 裁剪成功 ;

在这里插入图片描述

这 3 个目录没有用到 , 尝试删除这 3 个目录 , 删除后 , 程序正常运行 , 裁剪成功 ;

在这里插入图片描述


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\awt.dll 文件 , 删除 开始位置到该文件之间的所有 dll 文件 ;

删除了 41 个文件 , 程序正常执行 ;

在这里插入图片描述


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\fontmanager.dll 文件 , 删除 awt.dll 位置到该文件之间的所有 dll 文件 ;

删除 8 个文件后 , 程序仍然正常运行 ;

在这里插入图片描述


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\java.dll 文件 , 删除 fontmanager.dll 位置到该文件之间的所有 dll 文件 ;

删除 8 个文件后 , 程序仍然正常运行 ;

注意 , exe 文件不要随便删除 ;

在这里插入图片描述


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\net.dll 文件 , 删除 java.dll 位置到该文件之间的所有 dll 文件 ;

删除 25 个文件后 , 程序仍然正常运行 ;

注意 , exe 文件不要随便删除 ;

在这里插入图片描述


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\nio.dll 文件 , 删除 net.dll 位置到该文件之间的所有 dll 文件 ;

之间没有文件 , 不用删除 ;


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\verify.dll 文件 , 删除 nio.dll 位置到该文件之间的所有 dll 文件 ;

删除 14 个文件后 , 程序仍然正常运行 ;

注意 , exe 文件不要随便删除 ;
在这里插入图片描述


处理 D:\004_Operate\exe4j_work\JreCutter\jre_32\bin\zip.dll 文件 , 删除 verify.dll 位置到该文件之间的所有 dll 文件 ;

删除 3 个文件后 , 程序仍然正常运行 ;

注意 , exe 文件不要随便删除 ;

在这里插入图片描述


删除完毕后剩下这些文件 :

在这里插入图片描述

JRE 只剩下 111MB ;

在这里插入图片描述


http://www.ppmy.cn/news/12628.html

相关文章

Spark 运行架构

文章目录Spark 运行架构一、运行架构二、核心组件1、Driver2、Executor3、Master & Worker4、ApplicationMaster三、核心概念1、Exuecutor 和 Core2、并行度(Parallelism)3、有向无环图(DAG)4、提交流程Yarn Client 模式Spark…

基于FPGA的AM调制与解调(Verilog语言)

一、概述 通过FPGA实现AM信号的产生与解调。要求是通过VIO控制载波频率、调制信号频率、调制深度可调,然后通过ILA观察AM信号和解调后的信号。载波信号的频率要求是1M~10M,调制信号的频率要求是1K~10K,调制深度从0到1、步进0.1。VIO与ILA只能通过硬件板卡实现。 二、平台 软…

JDK1.8使用的垃圾回收器和执行GC的时长以及GC的频率

1. GC介绍 GC就是垃圾回收器。因为内存空间是有限的,创建的每个对象和变量都会占据内存,gc做的就是对象清除将内存释放出来。其中堆是虚拟机中进行垃圾回收的主要场所,其次是方法区。 2. 垃圾回收器 新生代收集器: Serial&a…

Postgresql源码(98)lex与yacc的定制交互方式

1 背景知识一:LEX %option prefix Postgresql中使用%option prefix"core_yy",影响范围:yy_create_buffer,yy_delete_buffer,yy_flex_debug,yy_init_buffer,yy_flush_buffer,yy_load_buffer_state,yy_switch_to_buffer,yyin,yyleng…

一文带你秒懂十大排序

目录 一、排序的概述 二、插入排序 1、直接插入排序 2、希尔排序 二、选择排序 1、直接选择排序 2、堆排序 三、交换排序 1、冒泡排序 2、快速排序 四、归并排序 五、计数排序 六、基数排序 七、桶排序 八、排序总结 一、排序的概述 排序就是将一组…

Java 日志框架 JUL

文章目录日志文件的重要性常见日志框架什么是JULJUL架构介绍入门案例JUL日志级别Logger之间的父子关系日志的配置文件日志原理解析日志文件的重要性 做开发最怕的就是线上系统出问题了,轻则留下产品和系统不安全可靠的不好印象,重则影响到公司的收入和口…

14.live555mediaserver-setup请求与响应

live555工程代码路径 live555工程在我的gitee下(doc下有思维导图、drawio图):https://gitee.com/lure_ai/live555/tree/master 学习demo live555mediaserver.cpp 学习线索和姿势 1.学习的线索和姿势 网络编程 流媒体的地基是网络编程&…

电脑磁盘占用率高怎么办?

Windows磁盘占用率高是一种普遍存在的问题,相信很多用户遇到过不止一次,它可能是在刚开机时、可能是在下载文件时、也可能是在开启关闭应用程序时……当磁盘占用高之后,您的计算机运行速度会变得像蜗牛一样缓慢,更糟糕的是有些电脑…