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 ...
随机推荐
- Spring 的 resolveBeforeInstantiation 方法作用详解
一.定义 resolveBeforeInstantiation 是 Spring 框架中 AbstractAutowireCapableBeanFactory 类的核心方法之一,它在 Bean 的实例 ...
- Redis使用IO多路复用进行事件处理机制
一.epoll多路复用 这里重点要说的就是redis的IO编程模型,首先了解下 为什么要有多路复用呢 ? 案例 引用知乎上一个高赞的回答来解释什么是I/O多路复用.假设你是一个老师,让30个学生解答一 ...
- redis那些数据类型?分别在那些场景使用
(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 例子:常规计数:微博数,粉丝数等 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的 ...
- 函数组件的声明方式及差异+React.memo和userCallback区别
1.函数组件的声明方式及差异 普通函数声明 箭头函数声明 使用React.FC类型(TypeScript专用) interface Props { content: string } // 写法一 c ...
- Traefik,想说爱你不容易:一场动态反向代理的心累之旅
前言:技术选型的初心 在微服务盛行.容器部署逐渐常态化的今天,"动态反向代理"显得尤为重要. Traefik 凭借其原生支持 Docker.自动生成路由.集成 Let's Encr ...
- element ui select组件 实现鼠标悬浮 自动展开选项
利用鼠标悬浮事件: 同样的原理也可以设置鼠标移开自动关闭
- 漏洞预警 | Ivanti Connect Secure栈溢出漏洞
0x00 漏洞编号 CVE-2025-0282 0x01 危险等级 高危 0x02 漏洞概述 Ivanti Connect Secure是一款远程访问和零信任安全解决方案,它提供了SSL VPN功能, ...
- 代码随想录第八天| Leecode 344. 反转字符串、Leecode 541 反转字符串 II
Leecode 344 反转字符串 题目链接:https://leetcode.cn/problems/reverse-string/description/ 题目描述 编写一个函数,其作用是将输入的 ...
- Flutter视频压缩技术:如何在应用中优化视频文件的质量和大小?
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- 用 Tarjan 算法求解有向图的强连通分量
图论中的连通性概念是许多算法与应用的基础.当我们研究网络结构.依赖关系或路径问题时,理解图中的连通性质至关重要.对于不同类型的图,连通性有着不同的表现形式和算法解决方案. 无向图与有向图的连通性 在无 ...