Search before asking
Version
I have project with grpc-netty-shaded lib that depends on guava 33.5.0-android which don't contain com.google.common.collect.SingletonImmutableBiMap. So it cause exception:
java.lang.RuntimeException: java.lang.ClassNotFoundException: com.google.common.collect.SingletonImmutableBiMap
at org.apache.fory.serializer.collection.GuavaCollectionSerializers.loadClass(GuavaCollectionSerializers.java:713)
at org.apache.fory.serializer.collection.GuavaCollectionSerializers.registerDefaultSerializers(GuavaCollectionSerializers.java:632)
at org.apache.fory.resolver.ClassResolver.addDefaultSerializers(ClassResolver.java:384)
at org.apache.fory.resolver.ClassResolver.initialize(ClassResolver.java:331)
at org.apache.fory.Fory.<init>(Fory.java:155)
at org.apache.fory.config.ForyBuilder.newFory(ForyBuilder.java:740)
at org.apache.fory.config.ForyBuilder.lambda$factory$0(ForyBuilder.java:822)
at org.apache.fory.pool.ThreadPoolFory.lambda$new$0(ThreadPoolFory.java:64)
at org.apache.fory.pool.ThreadPoolFory.<init>(ThreadPoolFory.java:69)
at org.apache.fory.config.ForyBuilder.buildThreadSafeFory(ForyBuilder.java:774)
---
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.SingletonImmutableBiMap
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:547)
at org.apache.fory.serializer.collection.GuavaCollectionSerializers.loadClass(GuavaCollectionSerializers.java:711)
... 37 more
From dependency tree:
[INFO] +- io.grpc:grpc-netty-shaded:jar:1.79.0:runtime
[INFO] | +- io.grpc:grpc-util:jar:1.79.0:runtime
[INFO] | +- com.google.guava:guava:jar:33.5.0-android:compile
[INFO] | | +- com.google.guava:failureaccess:jar:1.0.3:compile
[INFO] | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] | | \- com.google.j2objc:j2objc-annotations:jar:3.1:compile
[INFO] | +- com.google.errorprone:error_prone_annotations:jar:2.45.0:compile
[INFO] | +- io.perfmark:perfmark-api:jar:0.27.0:runtime
[INFO] | +- io.grpc:grpc-api:jar:1.79.0:compile
[INFO] | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.26:compile
Fory: 1.3.0
Java25
Component(s)
Java
Minimal reproduce step
add to dependencies io.grpc:grpc-netty-shaded:jar:1.79.0 without any other guava in deps
What did you expect to see?
Now in GuavaCollectionSerializers GUAVA_AVAILABLE calculated for only 6 classes, but in registerDefaultSerializers registered a bit more. So it must skip some loading or check each class existance
What did you see instead?
exception
Anything Else?
Current workaround for me is exclude guava from grpc-shaded and add dependency for -jre instead of -android guava
<dependency>
<groupId>org.apache.fory</groupId>
<artifactId>fory-core</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.5.0-jre</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>${grpc.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
Are you willing to submit a PR?
Search before asking
Version
I have project with grpc-netty-shaded lib that depends on guava 33.5.0-android which don't contain com.google.common.collect.SingletonImmutableBiMap. So it cause exception:
From dependency tree:
Fory: 1.3.0
Java25
Component(s)
Java
Minimal reproduce step
add to dependencies io.grpc:grpc-netty-shaded:jar:1.79.0 without any other guava in deps
What did you expect to see?
Now in
GuavaCollectionSerializersGUAVA_AVAILABLE calculated for only 6 classes, but inregisterDefaultSerializersregistered a bit more. So it must skip some loading or check each class existanceWhat did you see instead?
exception
Anything Else?
Current workaround for me is exclude guava from grpc-shaded and add dependency for
-jreinstead of-androidguavaAre you willing to submit a PR?