Java - 修改 Jar 包源码(非反编译操作)

简介: Java - 修改 Jar 包源码(非反编译操作)

在本工程中新建一个java,与待修改的源文件同名。并且将源码中的代码拷贝在该新的java文件中,在新的文件中修改你想修改的类容(因为新文件时自己创建的,所以可以为所欲为的进行修改),然后你会发现在新的java代码中只会用一行代码错误,就是包名路径错误。

这是当然的,因为在jar包中该文件所在包中的位置和我们新建的文件在包中所在的位置是不一样的。当然我们不能将新文件的包名路径改掉,否则就算将该文件编译成功,放在jar中也是没用的。
那么既然如此,我们为何不新建一个包,使其满足该文件所需的包名路径呢?

例如上图中,源码文件中导的包名路径是com.android.pc.ioc.app。我们就在项目中新建这些包,然后将该新的java文件放置其中即可。

我们可以看到这时候,新的java文件就没有导包上的错误了。

接下来的工作就简单了,利用编译器将整个工程编译。自然就可以获得到新java文件的class文件!

然后我们就可以回到刚才的主线上了。

编写修改好的java文件–>编译该java文件为class文件–>解压jar包–>找打待修改文件的class文件并将其替换–>压缩源码文件,并改为jar后缀格式。

随后解压该jar包,替换目标class文件,再次压缩回为jar文件即可!大功告成!

Tips:在最后一步,压缩为jar文件时要选中两项文件后右键压缩,否则导入到工程后会出现包名找不到的错误,也不能在图中文件夹外部文件夹进行压缩,至于压缩jar包的文件名就没什么要求,可以随意取。

总结:本文中的描述方法的关键就是在编译器下通过新建包名对目标文件进行编译。

附(反编译修改法):当然还有一种方法就是“盲改”,意思是通过 JD 反编译后,修改逻辑后,重新编译成 class(如果是用 source 执行则不需要反编译)当然这样唯一的缺陷就是必须要正式启动时才知道编译是否OK!

目录
相关文章
|
19天前
|
Kubernetes jenkins 持续交付
从代码到k8s部署应有尽有系列-java源码之String详解
本文详细介绍了一个基于 `gitlab + jenkins + harbor + k8s` 的自动化部署环境搭建流程。其中,`gitlab` 用于代码托管和 CI,`jenkins` 负责 CD 发布,`harbor` 作为镜像仓库,而 `k8s` 则用于运行服务。文章具体介绍了每项工具的部署步骤,并提供了详细的配置信息和示例代码。此外,还特别指出中间件(如 MySQL、Redis 等)应部署在 K8s 之外,以确保服务稳定性和独立性。通过本文,读者可以学习如何在本地环境中搭建一套完整的自动化部署系统。
49 0
|
26天前
|
Java 中间件 测试技术
java依赖冲突解决问题之jar包版本冲突无法通过升降级解决时如何解决
java依赖冲突解决问题之jar包版本冲突无法通过升降级解决时如何解决
|
26天前
|
Java Linux Maven
java依赖冲突解决问题之容器加载依赖jar包如何解决
java依赖冲突解决问题之容器加载依赖jar包如何解决
|
26天前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
5天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
|
1天前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
22天前
|
Java Maven 数据库
Java 包(package)
Java 包(package)
22 1
|
24天前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
25天前
|
Java Maven C++
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
|
25天前
|
Java Spring
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)