2010-06-27 5 views
8

पर उड़ाता है मैं बस Google-संग्रह के स्थान पर हमें गुवा से शुरू कर रहा हूं। स्प्लिटर क्लास अच्छा लग रहा था। लेकिन जब मैं इसका इस्तेमाल, इस तरह:स्प्लिटर सरल पैटर्न

private static final Pattern p = Pattern.compile(" +"); 
private static final Splitter usSplitter = Splitter.on(p).trimResults(); 

मैं एक ढेर डंप मिलती है: "। Com.google.common.base.Platform"

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 इस बारे में कुछ भी नहीं है तो यह अनुमान लगाने में थोड़ा मुश्किल है कि क्या गलत हो रहा है।

जैसा कि आप देख सकते हैं, पैटर्न मृत सरल है।

उत्तर

8

गुवा का कौन सा संस्करण आप उपयोग कर रहे हैं? यह r05 के साथ मेरे लिए बिल्कुल ठीक काम करता है।

संपादित करें: ऐसा लगता है कि यहां आपके विशिष्ट समय क्लासपाथ में Google संग्रह और अमरूद दोनों हैं। Platform (एक आंतरिक वर्ग) Google संग्रह में मौजूद था लेकिन precomputedCharMatcher विधि नहीं थी। Splitter को अमरूद जार से ठीक से लोड किया जा रहा है, लेकिन Platform को Google-संग्रह जार से लोड किया जा रहा है।

+0

माफ करना, कहा जाना चाहिए था: अमरूद-R05-SNAPSHOT.jar सूर्य JDK 1.6 उबंटू 10.04 पर तो मैं R05 भी उपयोग कर रहा हूँ, लेकिन इसकी बिल्कुल भी काम नहीं कर रहा। – fishtoprecords

+0

गुवा डाउनलोड पेज पर एक गैर स्नैपशॉट r05 है और मेवेन में भी उपलब्ध है ... इसे आज़माएं। – ColinD

+2

मैंने कभी भी "guava-r05-SNAPSHOT" के बारे में कभी नहीं सुना है। –

13

java.lang.NoSuchMethodError आपको बताता है कि वांछित विधि वर्तमान क्रम classpath में याद आ रही है, जबकि यह संकलन समय classpath में नहीं था।

दूसरे शब्दों में, इस समस्या को ठीक करने के लिए आपको एपीआई का सही संस्करण रखने के लिए अपने रनटाइम क्लासपाथ को संरेखित करने की आवश्यकता है जैसा कि आपने संकलन समय के दौरान उपयोग किया था। यह रनटाइम क्लासपाथ में मिश्रित लाइब्रेरी के विभिन्न संस्करणों के कारण भी हो सकता है। तब क्लासपाथ को साफ करें।

+5

बेशक, इस समस्या का पता लगाना इस तथ्य से थोड़ा जटिल है कि अमरूद - *। जार के शुरुआती संस्करणों को Google- collect - *। Jar कहा जाता था! –

3

असल में। आपको com.google.common.base.Platform कक्षा का दो संस्करण मिला है और इनमें से एक वर्ग में विधि है या नहीं है।

जार फ़ाइलों में से किसी एक को हटाने का प्रयास करें। मैं google-collections.jar को हटाने का सुझाव देता हूं और gauva.jar छोड़ देता हूं।

यह ठीक काम करेगा।