Zookeeper源码编译打包与逆向工程

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: Zookeeper源码编译打包与逆向工程

最近要将zookeeper静态版本升级到动态版本(为什么升级,如何升级是另一个话题了,后续我将专门开贴讨论)。升级过程中出现不兼容异常,需要修改zk源码。于是没有Java开发经验的我只能硬着头皮把这事给干了。


本文分为两部分,第一部分记录如何对zookeeper源码进行编译打包,第二部分记录如果对java class文件进行逆向工程。


zookeeper源码编译打包


$ git clone https://github.com/apache/zookeeper
$ git checkout -b 3.5.6 origin/branch-3.5.6
$ mvn package -DskipTests 
$ find . -name "*.tar.gz"
./zookeeper-assembly/target/apache-zookeeper-3.5.6-bin.tar.gz
./zookeeper-assembly/target/apache-zookeeper-3.5.6.tar.gz

打包之后生成了了两个tar.gz文件,带bin的才是我们想要的可用于部署zk的包。




class文件的逆向工程


百度了一番,Java有很多逆向工程的工具。我们就用jad吧。

首先是安装,

wget https://varaneckas.com/jad/jad158e.linux.intel.zip
ls ./jad
sudo ln -sf ./jad /usr/bin/jad

其次使用

$ cd zookeeper-server/target/classes/org/apache/zookeeper/server/quorum 
$ jad LearnerSessionTracker.class
$ ls ./LearnerSessionTracker.jad
$ cat  LearnerSessionTracker.jad    | head
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3)
// Source File Name:   LearnerSessionTracker.java
package org.apache.zookeeper.server.quorum;
import java.io.PrintWriter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
7月前
|
运维 Nacos 开发者
nacos常见问题之IDEA启动raft报错如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
107 0
|
7月前
|
Java Serverless 数据库连接
nacosjar包运行问题之报错何解决?
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
|
1月前
|
数据采集 分布式计算 Java
Kettle的Java开发环境需要什么jar包?
【10月更文挑战第24天】Kettle的Java开发环境需要什么jar包?
79 2
|
7月前
|
Nacos Java Spring
nacos jar包运行问题之报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
353 11
nacos jar包运行问题之报错如何解决
|
7月前
|
存储 消息中间件 数据采集
Flume 配置文件编写技巧(包会的,抄就完了)
本文介绍了Apache Flume的基础配置,包括数据源(Source)、数据通道(Channel)和数据处理器(Sink)三大部分。配置文件编写流程包括查阅官方文档、参考样例配置、实际操作配置。文章提供了一个经典例子,展示如何从本地端口收集数据并通过内存通道缓冲,最终记录到日志。配置流程包括声明组件、配置Source、Sink和Channel,然后将它们绑定。通过示例展示了如何配置HTTP Source和HDFS Sink,并给出了完整的配置文件示例及测试步骤,帮助读者理解Flume配置文件的编写。
346 0
|
Java Maven
SpringBoot 工程部署的 jar 包瘦身教程!
介绍 SpringBoot 工程部署的 jar 包瘦身教程
175 0
|
SQL Java 关系型数据库
从0开始,搭建springboot后台工程搭建及解释(从jdk 及 maven 讲起)(2)
从0开始,搭建springboot后台工程搭建及解释(从jdk 及 maven 讲起)
233 0
|
Java Apache Maven
Zookeeper源码在本地编译启动
Zookeeper源码在本地编译启动
122 0
|
Java 应用服务中间件 Maven
springboot项目打成war包放入tomcat中运行,原理分析
1.需要将pom.xml文件的packaging设置为war。 2.改成war包之后,就可以直接使用maven的命令将项目打成一个war包了。 3.将这个war包直接放入到tomcat中运行。 4.启
325 0
|
Java Maven
编译运行Zookeeper源码
最新版本的 zookeeper 已经使用了 maven 进行管理了、不再需要安装 Ant 下载完成之后、使用 Idea 作为一个 maven 项目打开
361 0