9.9 -> 9.9.2: java.lang.NoClassDefFoundError: org/objectweb/asm/Type
I’m the leader of pac4j (https://github.com/pac4j/pac4j). We use the nimbus-jose-jwt
dependency for JWT support.
We are at version 9.9. I try to upgrade to v9.9.2 but I have an issue: java.lang.NoClassDefFoundError: org/objectweb/asm/Type
Example:
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.PlainJWT;
import java.io.Serializable;
public class Main {
public static void main(String... args) {
JWTClaimsSet.Builder set = new JWTClaimsSet.Builder();
set.claim("t", new Test());
new PlainJWT(set.build()).serialize();
}
private static class Test implements Serializable {}
}
Full stack trace:
Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type
at com.nimbusds.jose.shaded.asm.BeansAccessBuilder.<clinit>(BeansAccessBuilder.java:42)
at com.nimbusds.jose.shaded.asm.BeansAccess.get(BeansAccess.java:118)
at com.nimbusds.jose.shaded.json.reader.BeansWriterASM.writeJSONString(BeansWriterASM.java:17)
at com.nimbusds.jose.shaded.json.JSONValue.writeJSONString(JSONValue.java:599)
at com.nimbusds.jose.shaded.json.reader.JsonWriter.writeJSONKV(JsonWriter.java:392)
at com.nimbusds.jose.shaded.json.reader.JsonWriter$7.writeJSONString(JsonWriter.java:145)
at com.nimbusds.jose.shaded.json.reader.JsonWriter$7.writeJSONString(JsonWriter.java:128)
at com.nimbusds.jose.shaded.json.JSONObject.writeJSON(JSONObject.java:178)
at com.nimbusds.jose.shaded.json.JSONObject.toJSONString(JSONObject.java:66)
at com.nimbusds.jose.shaded.json.JSONObject.toJSONString(JSONObject.java:50)
at com.nimbusds.jose.util.JSONObjectUtils.toJSONString(JSONObjectUtils.java:417)
at com.nimbusds.jose.Payload.toString(Payload.java:388)
at com.nimbusds.jose.Payload.toBytes(Payload.java:420)
at com.nimbusds.jose.Payload.toBase64URL(Payload.java:437)
at com.nimbusds.jose.PlainObject.serialize(PlainObject.java:149)
at Main.main(Main.java:11)
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 16 more
The issue appears when we have a class implementing Serializable.
Comments (3)
-
-
Yeah, there one further dep that has not been shaded:
org.ow2.asm:asm:jar:9.1
[INFO] +- net.minidev:json-smart:jar:2.4.7:compile [INFO] | \- net.minidev:accessors-smart:jar:2.4.7:compile [INFO] | \- org.ow2.asm:asm:jar:9.1:compile
-
- changed status to resolved
Fixed with shade of ow2 asm: 5a782beae19e93f1b830cf3f93b3ae8a17e6758e , for 9.9.3.
Any ideas how to test for this within our suite? To catch this error the jose lib needed to be on the class path without the optional JSON Smart dependency.
- Log in to comment
Ouch I can confirm that.
@Tobias Stadler Do you reckon after PR77 something additional needs shading?