【java】javac编译多个有依赖关系的java文件为class文件
历史文章:
【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】
【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】
【javac命令不能使用,提示不是内部命令或外部命令,请查看历史文章】
=================需求说明==========================
之前的文章中,仅说明了单个的java文件,没有多的外部依赖的单个java文件编译成class文件。
1.现在有个需求:
在使用一个mybatis-gen-1.2.jar包完成 自动代码生成过程中,【jar包中全是已经编译好的class文件】发现某个地方的源码写的有问题。
现在需要通过将class文件反编译成 java文件,修改源码后,再将java文件编译成可以使用的class文件,以完成这次需求。
2.可以看到,jar包中的文件全是编译的class文件
===================处理方式========================
1.将class文件拖拽至 IDEA中,就可以看到源码了
2.将class文件中的内容,拷贝到一个新建的同名java文件中,然后可以进行修改源码的操作
【因为class文件中的源码无法直接修改,因此将整个文件中的源码拷贝至 一个新建的同名java文件中】
现在代码可以操作了,就直接删除问题代码行
3.现在,按照源码的包路径,在任意的一个文件下,按照包路径创建层级目录,再将文件放入对应目录中
4.这个时候,单独执行编译命令,是不能成功编译文件的,因为本源文件还依赖了其他几个源码文件
从刚刚的源码可以看出来,本文件是依赖了其他几个文件的:
5.所以,需要将本文件依赖的其他几个源码文件,按照相同的方式,打开class文件,新建同名java文件,复制源码到同名java文件,然后创建对应的包路径,将java文件放入对应位置
6.分别放置完成后,新创建一个source.txt文件,将多个需要编译class的java文件,完整路径放在source文件中,注意,文件之间有依赖关系的话,将被依赖的文件放在前面,依赖别的文件的放在后面,保证编译的顺序
7.最后,cmd进入到source.txt文件所在路径,执行javac命令,开始编译工作
javac -encoding utf- @source.txt -Xlint:unchecked
注意加上参数:
-Xlint:unchecked
以保证取消验证,顺利编译成功
注意,source.txt文件前面有一个@符号
编译完成,就可以看到各个目录下,已经生成的class文件
8.最后,将编译好的class文件,放入jar包中,替换原本有问题的class文件
9.完成【多个有依赖关系的class文件,复制转化成java文件,修改完源码并重新编译成class文件的】操作!!!
【java】javac编译多个有依赖关系的java文件为class文件的更多相关文章
- Java进阶知识18 Spring对象依赖关系的几种写法
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Mac下 javac java 进行编译和运行含有包路径及引入jar包的类
近两天因为刚入职,属于熟悉环境的阶段,研究了下算法(第四版),当不使用IDE工具直接使用终端进行javac 编译带有包的类,然后使用java 会出现如下错误提示: 使用谷歌搜索了很久,终于找到解决的办 ...
- [转]使用Composer管理PHP依赖关系
简介 现在软件规模越来越大,PHP项目的开发模式和许多年前已经有了很大变化.记得初学PHP那会儿,boblog是一个很好的例子,几乎可以代表 PHP项目的开发模式.当时PHP 5.x以上的版本刚开始流 ...
- Makefile中头文件在依赖关系中作用
摘于:http://bbs.csdn.net/topics/120024677 (1)在makefile的依赖关系中用不用体现.h头文件?(2)如果在依赖关系中要体现.h头文件,应该体现到什么层次?= ...
- Java程序编译和运行的过程
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode) 2 ...
- Java程序编译和运行的过程【转】
转自:http://www.360doc.com/content/14/0218/23/9440338_353675002.shtml Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来 ...
- Makefile 9——为依赖关系文件建立依赖关系
现在我们再对complicated项目做一些更改,增加程序文件间依赖关系的复杂度. /× main.c ×/ #include"foo.h" int main(void) { fo ...
- Makefile 8——使用依赖关系文件
Makefile中存在一个include指令,它的作用如同C语言中的#include预处理指令.在Makefile中,可以通过include指令将自动生成的依赖关系文件包含进来,从而使得依赖关系文件中 ...
- java基础--继承、实现、依赖、关联、聚合、组合的联系与区别
继承 指的是一个类或者接口继承另一个类或者接口,而且可以增加自己的新功能. 实现 指的是一个class类实现interface接口. 依赖 简单说,就是一个类中的方法用到了另一个类,一般依赖关系在ja ...
随机推荐
- android内存管理-ION/PMEM【转】
转自:https://www.jianshu.com/p/0eac3d3ff6bb ION debug ION 在/sys/kernel/debug/ion/ 提供一个debugfs 接口. 每个he ...
- requests---session简介
http协议是无状态的,也就是每个请求都是独立的.那么登录后的一系列动作,都需要用cookie来验证身份是否是登录状态,为了高效的管理会话,保持会话,于是就有了session session简介 se ...
- int数据类型的最大数
/* 32位系统 */ #include <stdio.h> int main() { , b = ; ) { ; } printf(); ; do { n = n / ; b++; } ...
- 201777010217-金云馨《面向对象程序设计(java)》第十三周学习
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- django学习-数据库配置-创建模型
数据库配置 在mysite/settings.py中,包含了django项目设置的python模块 通常,这个配置文件使用SQLite作为默认数据库.如果你不熟悉数据库,或者只是想尝试下django, ...
- NOIP 2004 合并果子
洛谷P1090 https://www.luogu.org/problemnew/show/P1090 JDOJ 1270 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分 ...
- 基于Intel OpenVINO的搭建及应用,包含分类,目标检测,及分割,超分辨
PART I: 搭建环境OPENVINO+Tensorflow1.12.0 I: l_openvino_toolkit_p_2019.1.094 第一步常规安装参考链接:https://docs.op ...
- Chrome 禁止 http 自动转化为https
Chrome 浏览器 地址栏中输入 chrome://net-internals/#hsts 在 Delete domain security policies 中输入项目的域名,并 Delete 删 ...
- requests获取图片的宽和高
try: if cover: resp = requests.get('%s?x-oss-process=image/info' % (url), timeout=30) if resp.status ...
- 【转】HTTPS 如何保证数据传输的安全性?
大家都知道,在客户端与服务器数据传输的过程中,HTTP协议的传输是不安全的,也就是一般情况下HTTP是明文传输的.但HTTPS协议的数据传输是安全的,也就是说HTTPS数据的传输是经过加密的. 在客户 ...