Ich beginne gerade mit Guava anstelle von Google-Collections. Die Splitter-Klasse schien cool. Aber wenn ich es benutze, so:
%Vor%Ich bekomme einen Stack-Dump:
%Vor%Die Javadocs haben nichts über diese "com.google.common.base.Platform". Es ist also ein bisschen schwer zu erraten, was schief läuft.
Wie Sie sehen können, ist das Muster tot einfach.
Welche Version von Guava benutzt du? Das klappt bei mir mit dem r05 perfekt.
Bearbeiten: Es scheint, als ob das spezifische Problem hier darin besteht, dass Sie sowohl google-collections als auch guava in Ihrem Klassenpfad zur Laufzeit haben. Platform
(eine interne Klasse) existierte in Google-Sammlungen, hatte aber nicht die Methode precomputedCharMatcher
. Splitter
wird korrekt aus dem Guava-Jar geladen, aber Platform
wird aus dem Google-Collect-Jar geladen.
Die java.lang.NoSuchMethodError
sagt Ihnen, dass die gewünschte Methode ist im aktuellen -Klassenpfad fehlt, während er im Klassenpfad für die Kompilierung vorhanden war.
Mit anderen Worten, um dieses Problem zu beheben, müssen Sie Ihren Laufzeitklassenpfad an die richtige Version der API anpassen, die Sie während der Kompilierungszeit verwendet haben. Es kann auch dadurch verursacht werden, dass verschiedene Versionen der Bibliothek während des gesamten Laufzeitklassenpfads gemischt sind. Bereinigen Sie den Klassenpfad dann.
Eigentlich. Sie haben zwei Versionen von com.google.common.base.Platform
class und eine dieser Klassen hat oder hat nicht die Methode.
Versuchen Sie, eine der JAR-Dateien zu entfernen. Ich schlage vor, google-collections.jar
zu entfernen und gauva.jar
zu belassen.
Es wird gut funktionieren.