How to identify a missing method (Binary Compatibility) in a JAR statically

后端 未结 6 534
你的背包
你的背包 2020-12-08 08:28

I want to verify binary compatibility between 2 JARs.

Following the suggestions in this answer I used jboss tattletale but it can find only missing classes.

相关标签:
6条回答
  • 2020-12-08 08:57

    Clirr - checks Java libraries for binary and source compatibility with older releases:

    java -jar clirr-core-0.6-uber.jar -o OLD.jar -n NEW.jar
    0 讨论(0)
  • 2020-12-08 09:07

    japicmp is another tool for checking binary compatibility. It is available as standalone command line tool or as maven plugin.

    0 讨论(0)
  • 2020-12-08 09:10

    There is a tool by the name of Animal Sniffer that allows you to extract a signature for an API. Then it can statically verify that users of the API stick to the signature, and it can statically verify that implementors of the API have everything implemented. I think this would solve your problem nicely.

    You can download the jar for Animal Sniffer from the codehaus maven repository: http://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer/

    0 讨论(0)
  • 2020-12-08 09:15

    Do you need a to check a specific class or a generic tool for comparing jar's? If it's for 1 class, simply load the class in a custom class loader, check the methods signature by using reflection and that's it. If you need it for many JAR's/Classes this will be too much work.

    0 讨论(0)
  • 2020-12-08 09:20

    Revapi can do the job, too. It is easy to incorporate it into maven builds, which is not your case obviously, but might be of interest to others.

    It can also check arbitrary sets of jars using its standalone mode.

    0 讨论(0)
  • 2020-12-08 09:24

    japi-compliance-checker - backward API/ABI compatibility checker for a Java library:

    japi-compliance-checker -lib NAME -old OLD.jar -new NEW.jar
    

    sigtest - Oracle's SigTest signature testing and API conformance tool

    japitools - test for compatibility between Java APIs

    japi-checker - a java API backward compatibility checker which works at binary level

    revapi - API analysis and change tracking tool

    or manually using javap decompiler:

    javap OLD.class > OLD.txt
    javap NEW.class > NEW.txt
    diff -rNau OLD.txt NEW.txt > CHANGES.txt
    
    0 讨论(0)
提交回复
热议问题