jre 的生成与使用
前言
从 Java 9 开始,Oracle 不再单独提供 JRE(Java Runtime Environment) 的独立安装包,而是推荐开发者使用 模块化的 JRE 或 jlink 工具 来自定义运行时环境。
新版 Java(JDK 9+)的变化
不再提供独立的 JRE 安装包
- 以前:JDK(开发工具包)和 JRE(运行时环境)是分开的,用户可以只安装 JRE 来运行 Java 程序。
- 现在:Oracle 和 OpenJDK 只提供 完整的 JDK,但你可以使用
jlink工具从 JDK 中提取最小化的 JRE。
模块化系统(Java Platform Module System, JPMS)
- Java 9 引入了模块化系统,允许你只打包应用所需的模块,而不是整个 JRE。
- 你可以使用
jlink生成一个 自定义的、精简的 JRE,只包含你的应用所需的模块,从而大幅减小体积。
推荐使用
jlink生成最小 JREjlink是 JDK 自带的工具,可以创建仅包含必要模块的 JRE。- 这样你的 Electron 应用可以内置一个 很小的 JRE(可能只有 30-50MB,而不是完整的 200MB+)。
生成
jlink --add-modules java.base,java.desktop --output ./custom-jre --strip-debug --no-header-files --no-man-pages --compress=zip-6
参数解释
--add-modules java.base,java.desktop,java.sql \ # 你的应用依赖的模块
--output ./custom-jre \ # 输出目录
--strip-debug \ # 移除调试信息
--no-header-files \ # 移除头文件
--no-man-pages \ # 移除 man 手册
--compress=2 # 压缩级别(0=无, 1=常量, 2=全部)
生成apktool的jre
如果你自己生成的 JRE(Java Runtime Environment)缺少必要的模块或配置,可能会导致 Apktool 无法正常运行,并出现 无法初始化主类 brut.apktool.Main 这样的错误。以下是可能的原因和解决方案:
检查你的自定义 JRE 是否完整
Apktool 依赖 Java 标准库(如 java.base)和一些额外模块(如 java.desktop、java.xml 等)。
如果你的 JRE 是手动生成的(例如用 jlink 裁剪过),可能缺少关键模块。
解决方法
(1) 检查已安装的模块
运行以下命令,查看你的 JRE 包含哪些模块:
/Users/dsh/files.localized/code/andriod-helper/apps/main/src/tools/jre/bin/java --list-modules
Apktool 运行至少需要以下模块:
java.basejava.desktop(用于 GUI 相关操作,即使 Apktool 是命令行工具,某些类可能依赖它)java.xml(解析 XML 文件)
如果缺少关键模块,需要重新生成 JRE。
(2) 重新生成 JRE(包含必要模块)
如果你是用 jlink 生成的 JRE,确保包含 Apktool 所需的模块:
jlink --add-modules java.base,java.desktop,java.xml,java.sql,java.scripting --output ./myjre
然后使用新生成的 JRE 运行 Apktool:
./myjre/bin/java -jar apktool_2.9.3.jar --version
jre 的生成与使用的更多相关文章
- Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...
- 开发回归测试之Selenium开发环境搭建
前言 在解bug的过程中,经常遇到解完某个bug带来新的bug,原因一般是因为回归测试不足或不全面,下面我们来看看怎么利用selenium工具来完成开发后的回归测试, 虽然这可能是QA的事,不过有利于 ...
- CAS多点登录
转自:http://www.blogjava.net/alwayscy/archive/2012/12/01/392322.html 场景 想要用到的场景:用户访问WEB服务,WEB访问非WEB服务1 ...
- 把Jar文件转成exe安装文件
1.你要清楚的目标文件是32位还是64位的,如果生成的是32位,你就要使用32位的jre,如果生成的是64位,就要使用64位的jre. 图 1 在圆圈位置进行32bit或64bit的选择.因为我要创建 ...
- 2019.12.04 ADT on eclipse 配置篇
今天看JerryWang的简书博客https://www.jianshu.com/p/74ad8e4bbc49 ,SAP GUI 和ADT是互为补充的关系,有很多SAP新出的技术都没有办法在GUI上开 ...
- jdk11下载安装及环境变量配置
jdk11下载安装及环境变量配置 官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-50666 ...
- 为实践javaweb项目,搭建了相应环境
为实践javaweb项目,搭建了相应环境,现总结一下. JDK与JRE的安装与配置 前提准备: 1.我们下载的JDK安装包里面既包含JDK又包含JRE: 2.要确认你的电脑里面没有JDK和JRE的残留 ...
- 【工具】Java转换exe
一.导出jar包 eclipse中对着要转换的项目,右键,导出 搜索jar,选择jar文件,下一步 选择要输出的项目 继续下一步 选择主程序 完成 二.下载及安装exe4j,并转换jar文件为exe文 ...
- servlet包找不到,webservlet注解无效
把tomcat/lib/ 中的annotations-api.jar和servlet-api.jar复制到jdk/jre/lib/ext/目录中就行了 mine:C:\environment\apa ...
- Oracle 11g数据库详解(2)
FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...
随机推荐
- CM311-1A魔百和刷armbian或openwrt系统包
系统包下载链接:Openwrt:阿里云盘链接:https://www.aliyundrive.com/s/tEemRbs1TYB已失效下载后请解压!!!!!!!!! Armbian:链接:https: ...
- SpringMvc怎么样把数据带给页面
例子. /** * SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面 * * 1).可以在方法处传入Map.或者Model或者ModelMap. * 给 ...
- [设计模式/Java] 设计模式之门面模式(外观模式)【20】
概述 : 门面模式 := 外观模式 := Facade Pattern 产生背景 软件开发过程中,我们经常会遇到复杂系统,其中包含多个子系统和接口.在这种情况下,为了简化客户端的调用过程,提高代码的可 ...
- sonarqube+gitlab+jenkins+maven集成搭建(三)
安装JENKINS 关闭防火墙[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# systemctl disable fir ...
- ubuntu安装clamav
直接apt安装 sudo apt-get update sudo apt-get install clamav clamav-daemon clamscan --version 停止服务更新病毒库 为 ...
- 服务器时间漂移,如何开启Linux NTP自动同步
前言 在日常服务器运维中,我们往往默认服务器的时间是精准的.但最近一次偶然的 date 查询,让我发现--服务器时间竟然悄悄地漂移了-- 本文记录了整个排查与解决的过程,希望能帮到遇到类似问题的朋友, ...
- smail log插桩(模板)
即插即用 后面都用hook了,但是为了方便,还是分享下吧 Log const-string v0, "MYTAG" const-string v1, "Message&q ...
- JavaScript编程艺术:掌门人的代码之道
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- dll正由另一进程使用,因此该进程无法访问此文件
打开 Windows 资源监视器:按下 Win+R 快捷键打开"运行"对话框,输入 resmon 命令并按下回车键.在资源监视器中,选择"CPU"选项卡,然后在 ...
- B1071 小赌怡情 (15 分)
描述 常言道"小赌怡情".这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注 t 个筹码后,计算机给出第二个数.若玩家猜对 ...