【java】javac编译多个有依赖关系的java文件为class文件

 

历史文章:html

【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】

【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】

【javac命令不能使用,提示不是内部命令或外部命令,请查看历史文章】java

 

=================需求说明==========================mybatis

以前的文章中,仅说明了单个的java文件,没有多的外部依赖的单个java文件编译成class文件。post

1.如今有个需求:

  在使用一个mybatis-gen-1.2.jar包完成 自动代码生成过程当中,【jar包中全是已经编译好的class文件】发现某个地方的源码写的有问题。加密

  如今须要经过将class文件反编译成 java文件,修改源码后,再将java文件编译成可使用的class文件,以完成此次需求。url

 

2.能够看到,jar包中的文件全是编译的class文件

 

 

 

===================处理方式========================spa

1.将class文件拖拽至 IDEA中,就能够看到源码了

 

 

 

 

2.将class文件中的内容,拷贝到一个新建的同名java文件中,而后能够进行修改源码的操做

【由于class文件中的源码没法直接修改,所以将整个文件中的源码拷贝至  一个新建的同名java文件中】3d

 

 

 

如今代码能够操做了,就直接删除问题代码行code

 

 

 

 

 

 

3.如今,按照源码的包路径,在任意的一个文件下,按照包路径建立层级目录,再将文件放入对应目录中htm

 

 

 

 

 

 

4.这个时候,单独执行编译命令,是不能成功编译文件的,由于本源文件还依赖了其余几个源码文件

 

 

 

 

 

从刚刚的源码能够看出来,本文件是依赖了其余几个文件的:

 

 

 

 

5.因此,须要将本文件依赖的其余几个源码文件,按照相同的方式,打开class文件,新建同名java文件,复制源码到同名java文件,而后建立对应的包路径,将java文件放入对应位置

 

 

 

 

 

 

 

 

 

6.分别放置完成后,新建立一个source.txt文件,将多个须要编译class的java文件,完整路径放在source文件中,注意,文件之间有依赖关系的话,将被依赖的文件放在前面,依赖别的文件的放在后面,保证编译的顺序

 

 

 

 

 

7.最后,cmd进入到source.txt文件所在路径,执行javac命令,开始编译工做

javac -encoding utf-8 @source.txt -Xlint:unchecked

注意加上参数

-Xlint:unchecked

以保证取消验证,顺利编译成功

 

注意,source.txt文件前面有一个@符号

 

 

 

 

 

编译完成,就能够看到各个目录下,已经生成的class文件

 

 

 

 

 

 

 

8.最后,将编译好的class文件,放入jar包中,替换本来有问题的class文件

 

 

 

9.完成【多个有依赖关系的class文件,复制转化成java文件,修改完源码并从新编译成class文件的】操做!!!

相关文章
相关标签/搜索