历史文章:

【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文件的更多相关文章

  1. Java进阶知识18 Spring对象依赖关系的几种写法

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. Mac下 javac java 进行编译和运行含有包路径及引入jar包的类

    近两天因为刚入职,属于熟悉环境的阶段,研究了下算法(第四版),当不使用IDE工具直接使用终端进行javac 编译带有包的类,然后使用java 会出现如下错误提示: 使用谷歌搜索了很久,终于找到解决的办 ...

  3. [转]使用Composer管理PHP依赖关系

    简介 现在软件规模越来越大,PHP项目的开发模式和许多年前已经有了很大变化.记得初学PHP那会儿,boblog是一个很好的例子,几乎可以代表 PHP项目的开发模式.当时PHP 5.x以上的版本刚开始流 ...

  4. Makefile中头文件在依赖关系中作用

    摘于:http://bbs.csdn.net/topics/120024677 (1)在makefile的依赖关系中用不用体现.h头文件?(2)如果在依赖关系中要体现.h头文件,应该体现到什么层次?= ...

  5. Java程序编译和运行的过程

    Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode)  2 ...

  6. Java程序编译和运行的过程【转】

    转自:http://www.360doc.com/content/14/0218/23/9440338_353675002.shtml Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来 ...

  7. Makefile 9——为依赖关系文件建立依赖关系

    现在我们再对complicated项目做一些更改,增加程序文件间依赖关系的复杂度. /× main.c ×/ #include"foo.h" int main(void) { fo ...

  8. Makefile 8——使用依赖关系文件

    Makefile中存在一个include指令,它的作用如同C语言中的#include预处理指令.在Makefile中,可以通过include指令将自动生成的依赖关系文件包含进来,从而使得依赖关系文件中 ...

  9. java基础--继承、实现、依赖、关联、聚合、组合的联系与区别

    继承 指的是一个类或者接口继承另一个类或者接口,而且可以增加自己的新功能. 实现 指的是一个class类实现interface接口. 依赖 简单说,就是一个类中的方法用到了另一个类,一般依赖关系在ja ...

随机推荐

  1. VUE-父组件和子组件

    1.父组件 const cnp2 = Vue.extend({ template: ` <div> <h2>我是构造器2</h2> <cpn1>< ...

  2. 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用

    目录 0.概述websocket 1.app.js写法 2.后台写法 0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就 ...

  3. Android内部存储与外部存储的文件操作类

    public class SDCardHelper { // 判断SD卡是否被挂载 public static boolean isSDCardMounted() { // return Enviro ...

  4. 图解Java数据结构之双向链表

    上一篇文章说到了单链表,也通过案例具体实现了一下,但是单链表的缺点也显而易见. 单向链表查找的方向只能是一个方向 单向链表不能自我删除,需要靠辅助节点 而双向链表则能够很轻松地实现上面的功能. 何为双 ...

  5. Django框架(十八)—— drf:序列化组件(serializer)

    序列化组件 # 模型层 from django.db import models class Book(models.Model): nid = models.AutoField(primary_ke ...

  6. 【java集合总结】-- ArrayList源码解析

    一.前言 要想深入的了解集合就必须要通过分析源码来了解它,那如何来看源码,要看什么东西呢?主要从三个方面: 1.看继承结构 看这个类的继承结构,处于一个什么位置,不需要背记,有个大概的感觉就可以,我自 ...

  7. 莫烦TensorFlow_11 MNIST优化使用CNN

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #number 1 to 10 d ...

  8. 【Spring IoC】Spring Bean(三)

    一.Spring Bean的定义 被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的.bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象. ...

  9. SQL-select常用语句

    1.全套装备 select [select选项] 字段列表[字段别名]/* from 数据源[where 条件子句] [group by条件子句] [having 子句] [order by 子句] ...

  10. JavaScript中的对象与原型—你不知道的JavaScript上卷读书笔记(四)

    一.对象 对象可以通过两种形式定义:声明(文字)形式和构造形式.即: var myObj = { key: value // ... }; 或: var myObj = new Object(); m ...