Java SDK Time out Error: NoSuchMethodError: com.google.common.collect.Multisets.removeOccurrences
Issue
Using Java SDK within a framework, SDK always times out. Log shows the error below:
2602 [split-splitFetcher-0] ERROR io.split.engine.experiments.RefreshableSplitFetcher - RefreshableSplitFetcher failed: com.google.common.collect.Multisets.removeOccurrences(Lcom/google/common/collect/Multiset;Ljava/lang/Iterable;)Z
2603 [split-splitFetcher-0] DEBUG io.split.engine.experiments.RefreshableSplitFetcher - Reason:
java.lang.NoSuchMethodError: com.google.common.collect.Multisets.removeOccurrences(Lcom/google/common/collect/Multiset;Ljava/lang/Iterable;)Z
at io.split.engine.experiments.RefreshableSplitFetcher.runWithoutExceptionHandling(RefreshableSplitFetcher.java:214)
at io.split.engine.experiments.RefreshableSplitFetcher.run(RefreshableSplitFetcher.java:123)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:844)
Root Cause
Java SDK uses Google Guava library, the error above will occur if the framework use Google Guava library below 19.0.
Solution
Upgrade Google Guava to 19.0 or above version.