You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Alex Landau (Jira)" <ji...@apache.org> on 2021/07/14 21:27:00 UTC

[jira] [Created] (COMPRESS-582) Pack200CompressorOutputStream fails at runtime in 1.21 if ASM 4.0+ is used

Alex Landau created COMPRESS-582:
------------------------------------

             Summary: Pack200CompressorOutputStream fails at runtime in 1.21 if ASM 4.0+ is used
                 Key: COMPRESS-582
                 URL: https://issues.apache.org/jira/browse/COMPRESS-582
             Project: Commons Compress
          Issue Type: Bug
    Affects Versions: 1.21
            Reporter: Alex Landau


I just tried to upgrade an existing codebase to commons-compress 1.21 (from 1.20, which was working correctly) and encountered the following error in code trying to use the Pack200CompressorOutputStream:
{code:java}
java.lang.IncompatibleClassChangeError: class 
org.apache.commons.compress.harmony.pack200.Segment can not implement 
org.objectweb.asm.ClassVisitor, because it is not an interface 
(org.objectweb.asm.ClassVisitor is in unnamed module of loader 'app')
{code}
The Segment class {{implements}} rather than {{extends}} ClassVisitor. It looks like commons-compress is built against asm 3.2. Per [https://asm.ow2.io/versions.html], ClassVisitor was converted from an interface to an abstract class in asm 4.0, which was released in 2011, "in order to ensure backward binary compatibility in future ASM versions". To be clear, our project needs a more recent asm version on the classpath to support other libraries.

I have a repro of the error here, in case it helps: [https://github.com/AlexLandau/commons-compress-asm-error]

I want to add that I appreciate the effort you are making to support pack200 in a way that will outlast the JDK's native support.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)