HumbleUI/Skija

Fat/uber Jar doesn't work because of the multi-release feature

Opened this issue · 2 comments

I'm trying to build a jar file for my Java program that depends on Skija with the help of the Gradle Shadow plugin. It builds fine, however, I can't run it, because it complains that sun.misc.Cleaner, referenced in Cleanable.java, doesn't exist. I can see that there are 2 versions of Cleanable.java, pre- and post-Java 9, and it looks like the pre-java-9 version ends up being used even though my JDK is newer.

What's the best strategy to create a working Jar file then? I'd be fine with one that doesn't work on Java versions before 9.

tonsky commented

Funny how I have two mirror issues one after another: #61 complains that Java 8 doesn’t work :)

Can you try it with plain javac and java? Works for me. If it works for you, then problem is in Gradle

Screenshot 2023-09-05 at 16 05 03

You just need to add Multi-Release: true in MANIFEST.MF.

I think it's a issue with shadow jar, see GradleUp/shadow#449.