我刚开始用 Guava 代替 Google Collection 。 Splitter 类看起来很酷。但是当我使用它时,就像这样:
private static final Pattern p = Pattern.compile(" +");
private static final Splitter usSplitter = Splitter.on(p).trimResults();
我得到一个堆栈转储:
java.lang.NoSuchMethodError: com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher;
at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:662)
at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:69)
at com.google.common.base.Splitter.<init>(Splitter.java:99)
at com.google.common.base.Splitter.on(Splitter.java:208)
javadocs 对这个“com.google.common.base.Platform”一无所知。所以很难猜测出了什么问题。
如您所见,模式非常简单。
最佳答案
java.lang.NoSuchMethodError
告诉您所需的方法在当前运行时类路径 中丢失,而它在编译时类路径 中。
换句话说,要解决此问题,您需要调整运行时类路径,使其具有您在编译时使用的正确版本的 API。也可能是由于在整个运行时类路径中混合了不同版本的库。然后清理类路径。
关于java - Splitter 在简单的 Pattern 上爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126276/