Java实现jar包反编译后修改再打包回jar的教程

2. 我的本地环境是windows,解压这个jar包,得到一堆class文件,找到需要修改的class文件

3. 使用jd-gui工具看一下这个class文件,然后复制出来,粘贴到一个java文件中,然后对这个文件按你需要的方式进行编辑

4. cmd命令调出终端,使用javac 修改后的java文件路径 —》 重新得出class文件

5. 再次使用jar cvf test.jar a test.jar是生成的jar a是文件夹名字,他里面还有一个b文件夹,完整的目录结构是a/b/example.class 我这个命令的目的是把a.b作为包名打进去jar里面

6. 完成

当有依赖关系是java的编译是不通过的,所以要借助工具:

在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很具体,这对我们使用就非常不方便。

有道是,知其然才知其所以然。有时候,我们必须读取jar里的打包的类。而有时还有可能要对它进行小量修改,使之适用于自己的非凡需求。

前期预备

Java反编译工具

强烈推荐,小颖JAVA源代码反编译系列专家1.4终极版。

压缩工具:

Winrar

开始

1. 将jar包解压

我们可以使用winrar工具将jar解压到指定目录

2. 反编译class

使用 Java 反编译工具,将class文件反编译为java文件。(大多数反编译工具只提供单个class文件的反编译,这里推荐”小颖JAVA源代码反编译”工具,可以反编译一个目录下的所有class文件)

3. 构建项目

我们将反编译后的java文件设为项目的源文件目录。

将jar,及jar所需要的其它lib,作为libraries加入项目中,这样可以保证我们的java文件可以编译。

4. 对反编译的java进行修改

通过反编译的java文件,可能还有错误,不能编译通过,在不影响作者原始意图的前提下,我们必须对它进行小量修改,保证可编译通过。

保证java文件可以编译通过后,我们再在其基础上进行修改,使之符合自己的需求。

5. 编译修改的java

编译修改后的java文件,注重的是,最好只编译修改的单个java文件。

编译完成后,我们进行测试,保证修改无误。因为JVM会先找寻classes目录下的class文件,并率先加入,这样我们修改编译后的class文件,便是测试时使用的class文件。

重复这个过程,直至java达到我们的目的。

6. Jar打包

将修改生成后的class文件,替换我们将jar解压缩目录下的相应class文件,重新打包生成jar。

我们可以使用jar命令进行打包,也可以使用winrar工具进行打包。使用winrar工具打包时,要注重选择压缩文件格式为zip,并将生成的压缩包文件的后缀名设置为jar。

替换原来的jar。再进行最后一次测试。

总结

由于Java的跨平台性,使得java的class文件可以进行反编译,我们可以对jar文件进行修改,使之适用于自己的需求。

对jar文件进行修改,我们必须首先获得jar开发者的同意。

对jar文件进行修改,首先必须对反编译的java文件比较熟悉。这就必须有良好的代码阅读能力,清楚作者的技术架构和开发设计思想。假如没有把握,最好能与jar开发者联系,提出你的需求。

对于某些java开发者来说,并不希望将自己辛辛劳苦写的code公布于众,为了避免他人反编译,可以使用混淆器,但也只是增加代码阅读的困难性。假如不是作为商业运用,我们还是希望开发者能够提供源代码,互相学习探讨。

10、HTML表格(table 、th、tr、td、合并单元格)的简单认识

1、表格的定义

表格的定义是通过 table 标签来定义的,当然了,如果只是写一个 table 标签,是看不见任何内容的,一个表格是由行和列组成,而在HTML中,行的定义又是由 tr 标签来定义的,列是由 td 标签来定义的。

例如:

	<table >
			<tr>
				<td>1-1</td>
				<td>1-2</td>
			</tr>
			<tr>
				<td>2-1</td>
				<td>2-2</td>
			</tr>
		</table>

代码效果:

这怎么看都不想是表格吧?不急,那是因为HTML表格默认是不显示边框的,所以,我们还要设置表格的边框,如下:(在table标签添加border属性,属性值为边框的宽度,单位是像素)

		<table border="1px">
			<tr>
				<td>1-1</td>
				<td>1-2</td>
			</tr>
			<tr>
				<td>2-1</td>
				<td>2-2</td>
			</tr>
		</table>

现在效果如下:

通过上面可以看出:定义一个简单的表格,先用 table 标签确定好代码范围,按照自己想要的效果,确定想要几行几列,比如需要一行两列,就在 table 标签里面定义一个 tr 标签,然后再在 tr 标签里面定义 两个 td 标签就可以了。td 标签的意思 table data ,即表格数据。td 标签中间就是显示的内容。

2、表头单元格th标签

th 标签是与 td 标签同级的,是用来定义表头单元格的,默认是加粗显示的。在上面的代码的基础上增加一个 th 标签 ,如下:

	<table border="1">
			<tr>
				<th>aaa</th>
				<th>bbb</th>
			</tr>
			<tr>
				<td>1-1</td>
				<td>1-2</td>
			</tr>
			<tr>
				<td>2-1</td>
				<td>2-2</td>
			</tr>
		</table>

效果如下:

可以看出是默认加粗显示的。

3、调整整体表格大小

前面提到表格是默认不显示表框的,需要设置 table 标签的 border 属性,同样的,我们还可以通过设置 table 标签的 width 以及 height 属性,用来调整表格的整体大小。如下:

	<table border="1" width="220" height="220">
			<tr>
				<th>aaa</th>
				<th>bbb</th>
			</tr>
			<tr>
				<td>1-1</td>
				<td>1-2</td>
			</tr>
			<tr>
				<td>2-1</td>
				<td>2-2</td>
			</tr>
	</table>

效果如下:

这里并不是我将图片放大的,而是表格整体尺寸变大了,是不是又发现了 th 标签的秘密呢?没错,th 标签默认是居中于单元格的。

4、合并单元格

如果要将两个或多个列合并为一个列,将使用colspan属性

如果要合并两行或更多行,则将使用rowspan属性。

这两个属性都是针对单元格的,也就是 td 标签 或 th 标签。

这两个属性的值就是需要合并的单元格的个数。

例子如下:

<table border="1" width="220" height="220">
			<tr>
				<th rowspan="2">aaa</th>
				<th>bbb</th>
			</tr>
			<tr>
				<td>1-2</td>
			</tr>
			<tr>
				<td colspan="2">2-1</td>
			</tr>
		</table>

效果如下:

5、后续学习

1、这些只是一些简单的用法,还有很多的知识,但是对于我而言,这些已经够用了,比如设置表格的背景颜色,边框颜色,这些都是可以的,但是官方已经指出,在HTML5中尽量不要使用。详情请点击。

2、诸如 thead、tbody、tfoot 等标签也是相差不大。不再赘述。

3、后面自己动手,使用表格标签写一个课程表当做练习。

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://news.xiuzhanwang.com/post/1906.html

友情链接: