修改jre源码

本文介绍了在特殊需求下如何修改Java JRE源码来支持非标准化功能。通过重载和直接修改JRE源码两种方法进行探讨,强调了直接修改JRE作为解决底层问题的手段。详细步骤包括定位需求代码、修改源码、编译生成新的.class文件并替换JRE中的原始文件,最后进行测试。

说明:由于需求的要求,程序需要支持一些非标准化的东西,这些一般是无法预料的。如何让java来支持这种无标准化的东西呢,一般有两个方法:

1、通过重载来支持新特性,这是标准的做法,一般我们也应该这样去做。

2、通过修改jre,重构它来技能新特性。这应该算作是旁门左道了吧(这里也主要说的是这一种了)。大多情况下通过第一条我们就可以满足要求了,但如果我们支持的特性是比较基础(底层)的东西,通过第一种方法你可能要一路重载过来,java的类实在是太多了,往往我们只关注上层的实现。要是去看下层,各种类各种模式不是我们这种小菜 能掌控的,阿况你去重载一个比较底层的东东,那它之上的你都 要重建了,这是不现实的,因此我就想到这个方法,外科手术式的修改,直达根源。

如何来完成这个过程呢!(做之前一定要清楚自己在做什么),

思路:

jre和我们平时看到的类是一样的,它只不过是把写的好类打包给我们用而已,而面者是编译后的class文件。

我们要做的就是:

1、找到实现我们需求的代码,进行修改

2、编译修改后的源码文件生成 .class文件,

3、用生成的.class替换jre中相应包中的相应.class文件

4、测试

动手之前要下载一份与当前jre相配的源码。

1、找到实现我们需求的代码,

这个过程最好是把jre源码加载到eclipse中跟踪定位,找到后要认识它,了解它,(最后我们要干了它^_^).找到后你也可以在liabary中看到它具体在jre中的那个包里。

2、修改相应的源码文件生成.class(注意兼容性哦)

根据我们要求对源码进行修改,这里的修改还是尽量在源码的基础上改,以免产生不必的影响。修改完生就可以编译它了。

javac xxxx(要加上-Xlint:unchecked 在src目录下编译 xxxx是你要编译的修改文件的相对路径)

3、解压相应的包,把生成的.class替换进行,重压。

jar cvfm [jarname.jar] meta-inf/manifest.mf .

4、用生成的包替换jre中的包,可以测试修改了。(注意)


从来没有系统学过java,记录这个过程以便以后用到时可以copy

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值