<xml>
<item name='Class3.class'>
<disassembly><!-- there is a difference in disassembly; the left disassembly is in left tag, the right - in right tag diff result in diff -->
<diff>
<line n='1'>4,5d3</line>
<line n='2'>&lt; java.lang.String field2;</line>
<line n='3'>&lt; </line></diff>
<left>
<line n='1'>public class Class3 extends java.lang.Object{</line>
<line n='2'>java.lang.String field1;</line>
<line n='3'></line>
<line n='4'>java.lang.String field2;</line>
<line n='5'></line>
<line n='6'>public Class3();</line>
<line n='7'>  Code:</line>
<line n='8'>   0:.aload_0</line>
<line n='9'>   1:.invokespecial.#1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V</line>
<line n='10'>   4:.return</line>
<line n='11'></line>
<line n='12'>void method1();</line>
<line n='13'>  Code:</line>
<line n='14'>   0:.return</line>
<line n='15'></line>
<line n='16'>}</line>
<line n='17'></line></left>
<right>
<line n='1'>public class Class3 extends java.lang.Object{</line>
<line n='2'>java.lang.String field1;</line>
<line n='3'></line>
<line n='4'>public Class3();</line>
<line n='5'>  Code:</line>
<line n='6'>   0:.aload_0</line>
<line n='7'>   1:.invokespecial.#1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V</line>
<line n='8'>   4:.return</line>
<line n='9'></line>
<line n='10'>void method1();</line>
<line n='11'>  Code:</line>
<line n='12'>   0:.return</line>
<line n='13'></line>
<line n='14'>}</line>
<line n='15'></line></right>
</disassembly>
</item>
<item name='Class3.java'>
<text><!-- this is a text file, and there is a difference in text. Diff result in diff tag -->
<diff>5d4
&lt;  String field2;
</diff>
<left>public class Class3 { 
 //class 3 has extra field for jar 1
 void method1(){}
 String field1;
 String field2;
}
</left>
<right>public class Class3 { 
 //class 3 has extra field for jar 1
 void method1(){}
 String field1;
}
</right>
</text>
</item>
<item name='Class2.class'>
<disassembly>
<diff>
<line n='1'>11a12,15</line>
<line n='2'>&gt; void method2();</line>
<line n='3'>&gt;   Code:</line>
<line n='4'>&gt;    0:.return</line>
<line n='5'>&gt; </line></diff>
<left>
<line n='1'>public class Class2 extends java.lang.Object{</line>
<line n='2'>public Class2();</line>
<line n='3'>  Code:</line>
<line n='4'>   0:.aload_0</line>
<line n='5'>   1:.invokespecial.#1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V</line>
<line n='6'>   4:.return</line>
<line n='7'></line>
<line n='8'>void method1();</line>
<line n='9'>  Code:</line>
<line n='10'>   0:.return</line>
<line n='11'></line>
<line n='12'>}</line>
<line n='13'></line></left>
<right>
<line n='1'>public class Class2 extends java.lang.Object{</line>
<line n='2'>public Class2();</line>
<line n='3'>  Code:</line>
<line n='4'>   0:.aload_0</line>
<line n='5'>   1:.invokespecial.#1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V</line>
<line n='6'>   4:.return</line>
<line n='7'></line>
<line n='8'>void method1();</line>
<line n='9'>  Code:</line>
<line n='10'>   0:.return</line>
<line n='11'></line>
<line n='12'>void method2();</line>
<line n='13'>  Code:</line>
<line n='14'>   0:.return</line>
<line n='15'></line>
<line n='16'>}</line>
<line n='17'></line></right>
</disassembly>
</item>
<item name='Class4.java'>
<text>
<diff>5d4
&lt;    System.err.println(s);
</diff>
<left>public class Class4 { 
 //class 4 differs in method1 code
 void method1(){
   String s=&quot;&quot;;
   System.err.println(s);
 }
}
</left>
<right>public class Class4 { 
 //class 4 differs in method1 code
 void method1(){
   String s=&quot;&quot;;
 }
}
</right>
</text>
</item>
<item name='Class4.class'>
<disassembly>
<diff>
<line n='1'>12,15c12</line>
<line n='2'>&lt;    3:.getstatic.#3; //Field java/lang/System.err:Ljava/io/PrintStream;</line>
<line n='3'>&lt;    6:.aload_1</line>
<line n='4'>&lt;    7:.invokevirtual.#4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V</line>
<line n='5'>&lt;    10:.return</line>
<line n='6'>---</line>
<line n='7'>&gt;    3:.return</line></diff>
<left>
<line n='1'>public class Class4 extends java.lang.Object{</line>
<line n='2'>public Class4();</line>
<line n='3'>  Code:</line>
<line n='4'>   0:.aload_0</line>
<line n='5'>   1:.invokespecial.#1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V</line>
<line n='6'>   4:.return</line>
<line n='7'></line>
<line n='8'>void method1();</line>
<line n='9'>  Code:</line>
<line n='10'>   0:.ldc.#2; //String </line>
<line n='11'>   2:.astore_1</line>
<line n='12'>   3:.getstatic.#3; //Field java/lang/System.err:Ljava/io/PrintStream;</line>
<line n='13'>   6:.aload_1</line>
<line n='14'>   7:.invokevirtual.#4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V</line>
<line n='15'>   10:.return</line>
<line n='16'></line>
<line n='17'>}</line>
<line n='18'></line></left>
<right>
<line n='1'>public class Class4 extends java.lang.Object{</line>
<line n='2'>public Class4();</line>
<line n='3'>  Code:</line>
<line n='4'>   0:.aload_0</line>
<line n='5'>   1:.invokespecial.#1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V</line>
<line n='6'>   4:.return</line>
<line n='7'></line>
<line n='8'>void method1();</line>
<line n='9'>  Code:</line>
<line n='10'>   0:.ldc.#2; //String </line>
<line n='11'>   2:.astore_1</line>
<line n='12'>   3:.return</line>
<line n='13'></line>
<line n='14'>}</line>
<line n='15'></line></right>
</disassembly>
</item>
<item name='Class1.java'>
<present><!-- there is a difference in presence - the class is present in right jar, but not in left jar--><left>no</left><right>yes</right></present>
</item>
<item name='META-INF.MANIFEST.MF'>
</item>
<item name='Class2.java'>
<text>
<diff>3a4
&gt;  void method2(){}
</diff>
<left>public class Class2 { 
 //class 2 has extra method for jar 2
 void method1(){}
}
</left>
<right>public class Class2 { 
 //class 2 has extra method for jar 2
 void method1(){}
 void method2(){}
}
</right>
</text>
</item>
<item name='META-INF.'>
</item>
<item name='Class1.class'>
<present><left>no</left><right>yes</right></present>
</item>
<totalDifferences>8</totalDifferences>
JarCompare is free for personal use and requires a license for corporate use
We also make FaultFactory tool (simulates Socket/HTTP faults in your app)
Please visit http://www.extradata.com/products/
E-mail feedback to jarc@extradata.com
</xml>
