有没有办法比较两个Java war文件

有没有办法比较两个Java war文件,java,Java,不久前,我们为web服务器构建了一些war文件,现在已经重新构建了它们 为了确保没有任何变化(作为质量检查),我们尝试使用WinMerge对它们进行比较。我们看到的差异似乎是由于某种元数据造成的,例如,文件是在不同的日期生成的 线条上的差异似乎是一致的 «d}WAR文件基本上是Zip文件。为什么不提取内容并依次比较每个文件?这避免了任何作为WAR文件一部分的元数据。如果发现任何差异,您还可以找出它们的实际区别。如果您先解压缩它们,然后比较文件夹,应该会更容易 在Windows中,您可以只使用jd

不久前,我们为web服务器构建了一些war文件,现在已经重新构建了它们

为了确保没有任何变化(作为质量检查),我们尝试使用WinMerge对它们进行比较。我们看到的差异似乎是由于某种元数据造成的,例如,文件是在不同的日期生成的

线条上的差异似乎是一致的


«d}WAR文件基本上是Zip文件。为什么不提取内容并依次比较每个文件?这避免了任何作为WAR文件一部分的元数据。如果发现任何差异,您还可以找出它们的实际区别。

如果您先解压缩它们,然后比较文件夹,应该会更容易

在Windows中,您可以只使用jdk附带的“jar”可执行文件

jar -xvf xxxx.war
然后可以使用WinMerge比较这两个文件夹


希望这有助于您使用eclipse比较jar/war文件。

链接没有提到war文件。我使用的是Indigo,eclipse似乎只支持jar比较,因此我必须将war扩展重命名为jar,让eclipse进行结构比较。

使用“Beyond Compare”免费试用版。。。(或购买)
我认为这是唯一可以做到这一点的工具。

如果安装WinMerge的7zip插件,您可以配置WinMerge来比较zip文件(顺便说一下,.WAR文件)。 请记住,这不是很容易安装,你必须安装插件,它是由.dll和必须在一个文件夹中提取。。。。老实说,我不记得我是怎么做的。 我相信最后我使用了独立安装程序ooption,并使用了9.20版本的插件

尽管有时winmerge告诉我.class文件中存在差异,但它使二进制行变高,但我看不到任何差异。
至少您可以比较war文件夹结构。

我通常使用这样的方法,运行2个解压命令并根据需要区分输出。例如,我需要比较两个Java WAR文件

$ sdiff --width 160 \
   <(unzip -l -v my_num1.war | cut -c 1-9,59-,49-57 | sort -k3) \
   <(unzip -l -v my_num2.war | cut -c 1-9,59-,49-57 | sort -k3)

我更喜欢这种方法,因为它不需要空间来解压缩文件,然后比较它们。

只需使用
pkgdiff

pkgdiff a.war b.war

在Linux中随时可用,输出相当可解析(您还可以检查bash脚本中的状态代码)。它还生成了一个很棒的HTML报告。

解压两个好答案后可能会有所帮助-这是第一个答案(7秒之前),所以这一个被接受了。
pkgdiff a.war b.war