Closed easel closed 10 months ago
Is there a fix or workaround for this? I'm also getting this error with Java 17.
I guess I need to bump ASM here https://github.com/eed3si9n/jarjar-abrams/blob/develop/build.sbt#L26-L27
I took a look at the changes gradle made to support Java17, and it looks like it primarily comes down to updating Opcodes.ASM7
to Opcodes.ASM9
in some or all of these locations: https://github.com/search?q=repo%3Aeed3si9n%2Fjarjar-abrams+Opcodes.ASM7&type=code
I confirmed locally that updating ASM and changing Opcodes.ASM7
to Opcodes.ASM9
in jarjar-abrams fixed my particular issue.
IIUC, I'm not sure this is fixed when viewed from the context of sbt-assembly... It's not enough for the version of jarjar to be bumped; whoever is creating ClassVisitor
s needs to pass Opcodes.ASM9
to the constructor.
Can I substitute a patched version of jarjar-abrams in my build? :)
Here's GitHub Actions https://github.com/sbt/sbt-assembly/actions/runs/6649535607 demonstrating scripted tests on JDK 21.
Here's GitHub Actions https://github.com/sbt/sbt-assembly/actions/runs/6649535607 demonstrating scripted tests on JDK 21.
👋 Do you mean this proves sbt-assembly
should work with Java 17+ bytecode?
Even with the latest version of sbt-assembly
, I've hit this ASM9 issue due to a library using records (Java 14) and sealed classes (Java 17).
Applying the changes suggested above to jarjar-abrams
and recompiling sbt-assembly
locally with it solved the issue.
I've opened a PR to gather feedback.
I've confirmed that version 2.1.5 fixes my problem. Thanks!
It appears as if for shading to work on Java 17 some dependencies must be updated. Definitely asm, possibly jar jar links as well. For reference, here's a full stack trace trying to shade
cats.**
into a spark project on Java 17: