Created
August 20, 2024 05:24
-
-
Save DanielThomas/83eefaad41af33a071d9a9ee17ca8fe1 to your computer and use it in GitHub Desktop.
Shared class paths mismatch due to Class-Path manifest entries
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash -xe | |
dir=$(mktemp -d) | |
cd "$dir" | |
touch manifest-empty.txt | |
cat << EOF > manifest-guice-all.txt | |
Class-Path: guice-grapher-5.1.0.jar guice-assistedinject-5.1.0.jar guice-dagger-adapter-5.1.0.jar guice-jmx-5.1.0.jar guice-jndi-5.1.0.jar guice-persist-5.1.0.jar guice-struts2-5.1.0.jar guice-servlet-5.1.0.jar guice-spring-5.1.0.jar guice-throwingproviders-5.1.0.jar guice-5.1.0.jar asm-9.6.jar guava-30.1-jre.jar failureaccess-1.0.1.jar listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar | |
EOF | |
mkdir lib | |
jar cvfm lib/guice-all-5.1.1-jakartaee.jar manifest-guice-all.txt | |
jar cvfm lib/failureaccess-1.0.1.jar manifest-empty.txt | |
jar cvfm lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar manifest-empty.txt | |
cat << EOF > Main.java | |
public class Main { | |
public static void main(String[] args) { | |
} | |
} | |
EOF | |
javac Main.java | |
jar cvfm lib/main.jar manifest-empty.txt Main.class | |
CP="lib/guice-all-5.1.1-jakartaee.jar:lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:lib/failureaccess-1.0.1.jar:lib/main.jar" | |
java -XX:ArchiveClassesAtExit=application.jsa -Xlog:class+path=info -cp "$CP" Main | |
java -XX:SharedArchiveFile=application.jsa -Xlog:class+path=info -cp "$CP" Main |
The reason for this unusual Class-Path
entry with missing libraries is the Gradle Shadow plugin:
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Using:
Results in: