博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改jar源码
阅读量:4059 次
发布时间:2019-05-25

本文共 867 字,大约阅读时间需要 2 分钟。

我所使用的步骤:

1.如想要修改java.lang.Object源码;新建Object.java,package 路径为package java.lang; ;
2.使用反编译工具,将想要修改的源文件比如Object.class打开,copy其内容到1的java文件中;
3.使用java编译命令(这算是比较低级的做法)编译Object.java为Object.class文件;(也可以利用eclipse的编译功能.)
4.使用压缩软件打开(而不是解压,如果解压的话还要再麻烦一些)rt.jar,替换其下的/lang/Object.class文件
5.测试.

其中出现的问题有:

1.
这里写图片描述

java版本有问题:

Java SE 10 = 54,Java SE 9 = 53,Java SE 8 = 52,Java SE 7 = 51,Java SE 6.0 = 50,Java SE 5.0 = 49,JDK 1.4 = 48,JDK 1.3 = 47,JDK 1.2 = 46,JDK 1.1 = 45

我所使用的javac命令是jdk1.8的,而我所编译的目标文件是1.7的,所以会出这个问题;

使用下面的编译命令可以解决编译的问题:

/jdk1.8/bin/javac -source 1.7 -target 1.7 T.java

但是这样是不被推荐的,虽然使用高版本的JDK可以通过指定编译source和target参数来兼容低版本JDK,但只是class文件格式上的,如果引用了高版本JRE库中某些方法一样会再低版本的JDK上报错;比如java.util.concurrent.ConcurrentHashMap.keySet()这个方法.

2.使用1编译命令,在编译后会报一个warning:

这里写图片描述

warning: [options] bootstrap class path not set in conjunction with -source 1.7

在stackflow上发现问题的的解决在于可以设置编译参数.()

参考:

你可能感兴趣的文章
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
SQL语句(二)查询语句
查看>>
SQL语句(三) 更新语句(增 删 改)
查看>>
SQL语句(四)视图定义、查询、更新和删除
查看>>
SQL语句(五) 索引建立
查看>>
SQL语句(六) 自主存取控制
查看>>
《数据库系统概论》 第六章 关系数据理论
查看>>
《数据库系统概论》 第七章 数据库设计
查看>>
SQL语句(七)实体完整性
查看>>
SQL语句(八)参照完整性
查看>>
SQL语句(九)用户自定义完整性
查看>>
数据库复习(八)——Transact-SQL程序设计
查看>>
数据库复习(九)——存储过程
查看>>
数据库复习(十)——触发器
查看>>
Python入门(二)开发环境的搭建以及集成开发环境pycharm的安装
查看>>
Python入门(四)使用Python实现简单的通讯录(1.0版本)
查看>>
操作系统复习(一) 概述——操作系统设计目标 发展 分类 功能 特征
查看>>
操作系统复习(二)——进程的概念 特征 状态及转换 控制 同步及典型问题 通信
查看>>
《计算机网络》第四章 网络层 ——分类的IP 划分子网 构成超网 路由选择协议 路由器构成
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>