IDEA修改gitblit.jar包中CLASS文件后重新生成JAR包
一、背景
最近gitblit升级到了1.9.3使用的是gravatar全球头像,但在国内访问速度一直不是很理想,所以要对gitblit.jar进行改造,因此写下这篇快速使用IDEA修改源码并替换class文件再打成jar包的文章。
二、具体步骤
1、下载冰蝎项目jar包,放入D盘目录下:
2、使用IDEA新建一个maven项目,这里就叫test_123:
3、打开File -> Project Structure:
在Libraries中加入刚刚下载的jar包:
加载完如下,点击Apply和OK即可。
此时整个项目结构如下:
4、假设现在想要修改net.rebeyond.behinder.core
包中的ShellService类,就需要在我们的项目中创建一个同名的包以及同名的ShellService类,然后将jar中的ShellService类的内容复制过去:
5、看到复制过去之后,代码中有报错,此时就需要我们自己修改这些报错。
这里我遇到的大致有两类报错:
-
一类是java版本的报错,整个项目使用的jdk版本是1.5,但某些函数只能在jdk1.8中使用
此时就需要修改项目的编码,这里主要也是在File->Project Structure -> Modules中调整Language Level为jdk 8:
然后在Project一项,也修改成jdk8:
在File -> Settings中找到Java Compiler项,修改编译环境为1.8:
-
另一类问题是通过class文件反编译得到的java源码中存在变量重复声明的问题:
这里只需要删除重复多余的声明即可。
6.修改完错误之后,即可编译项目:
7.编译完成之后,在target目录会生成ShellService.class文件:
8、解压jar包,然后用刚刚生成的ShellService.class替换掉jar包解压之后文件夹内net/rebeyond/behinder/core目录下的ShellService.class:
9、回到D:\Test\Behinder_v3.0_Beta_6_win (1)
目录下,进入cmd窗口,使用下面的命令重新生成jar包:
jar cfm test.jar Behinder_v3.0_Beta6_win\META-INF\MANIFEST.MF -C Behinder_v3.0_Beta6_win\ .
执行完会在当前目录生成一个test.jar的文件,该jar包即为修改源码并替换class文件之后的jar包。
结束前欢迎中国网友使用中国头像服务:https://www.cnavatar.com