2014-10-15 6 views
15

मैं एक निम्न कार्य हो:

def removeLast(list: List[Int]): List[Int] = list match { 
    case List() => List() 
    case List(x) => List() 
    case x :: xs => x :: removeLast(xs) 
} 

जब मैंने इसे और उपयोग को परिभाषित यह एसबीटी कंसोल से सबकुछ ठीक काम करता है। लेकिन जब मैं IntelliJ विचार में किसी कार्यपत्रक बना सकते हैं और इसे चलाने के लिए कोशिश तो निम्न अपवाद प्रकट होता है:

java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object; at week5.A$A26$A$A26.removeLast(lists.sc8362409100671270508.tmp:30) at #worksheet#.#worksheet#(lists.sc8362409100671270508.tmp:33)

इसके अलावा, जब मैं करने के लिए अंतिम पंक्ति को बदलने:

case x :: xs => 1 :: removeLast(xs)} 

तो यह काम करता है।

समस्या क्या हो सकती है?

+0

आप 'करने के लिए हस्ताक्षर को बदल सकते हैं def removeLast [टी] (सूची: सूची [टी]): सूची [टी] ' –

+0

उत्तर के लिए धन्यवाद, दुर्भाग्य से मैंने पहले से ही कोशिश की है और नतीजा ऊपर वर्णित है। –

+0

आइडिया अपने स्कैला कंपाइलर का उपयोग करें। तो आपको https://youtrack.jetbrains.com/issues/SCL पर टिकट बनाना चाहिए। यदि आपके पास प्लगइन का नवीनतम संस्करण 135.1228 –

उत्तर

22

मुझे यह समस्या थी। एंड्रज के साथ सहमत, विचार अपने स्वयं के कंपाइलर का उपयोग करता है, इसलिए आपको इसे किसी भी तरह से अक्षम करना होगा। पर जाएं सेटिंग्स-> स्कैला-> वर्कशीट और अनचेक करें "कंपाइलर प्रक्रिया में वर्कशीट चलाएं"

+2

धन्यवाद। एक जादू की तरह काम किया। यह परियोजना सेटिंग्स के तहत "स्कैला" है। जैसा कि आपने "प्रोजेक्ट डिफॉल्ट" के तहत कहा था, यह अनचेक करने में मदद करता है। –

+0

उस विकल्प को अनचेक करने के कारण: 1) वर्कशीट में, लाइन (परिणाम टैब पर) जिसने "java.lang.No.SuchMethodError ..." अचानक गायब हो गया, लेकिन अभी भी मूल्यांकन नहीं किया 2) मेरे विचार ने java.exe के बहुत सारे बनाए और conhost.exe प्रक्रियाओं, जो 100% सीपीयू लिया और आइडिया अविश्वसनीय रूप से धीमी और गैर प्रतिक्रियाशील बनाया। क्या कोई अन्य समाधान है? – PaoloC

+0

टोमेक, nie działa dla mnie –

0

मुझे एक ही समस्या है। जब आप इसे मानचित्र फ़ंक्शन का उपयोग करने के लिए बदलते हैं तो यह काम करता है! मुझे नहीं पता कि क्यों, लेकिन इसे कैसे ठीक किया जाए।

+0

मानचित्र फ़ंक्शन के साथ समाधान यह वह नहीं है जिसे मैं ढूंढ रहा था, लेकिन वैसे भी धन्यवाद। –

4

कोई भी मामला मेरे मामले में उपयोगी नहीं था। फिर भी मुझे एक समाधान मिला जो मेरे लिए काम करता था .. यह स्केलैट संस्करण के साथ समस्या थी। pom.xml uprade में

<dependency> 
     <groupId>org.scalatest</groupId> 
     <artifactId>scalatest_2.11</artifactId> 
     <version>2.2.4</version> 
     <scope>test</scope> 
    </dependency> 

को

+0

यह मेरे लिए काम किया। –

3

मदद की तो, हालांकि इसके बाद के संस्करण मेरी समस्या यह IntelliJ से संबंधित है हल नहीं किया।

असल में, यह निर्भरता से लोड करने के बजाय कक्षा :: विधि को हल करने के लिए स्कैला एसडीके पसंद कर रहा था।

मैं यह मुझे जहां यह देख रहा था दिखाने के लिए JVM स्विच में

-verbose:class

इस्तेमाल किया; तुरंत मुझे इसमें घुसपैठ कर रहा है क्योंकि यह स्काला एसडीके से कक्षा को लोड करने की कोशिश कर रहा है (यह उम्मीद है कि यह मेवेन से libs में खींचने के लिए)।

मैं सचमुच अपने प्रोजेक्ट सेटिंग्स से स्काला एसडीके नष्ट कर दिया और समस्या दूर चला गया। अब तक, स्कैला (और निश्चित रूप से मिश्रित जावा पर्यावरण में) के साथ मेरा अनुभव मुझे विश्वास दिलाता है कि परिपक्व होने के तरीके हैं। यह एक मौलिक वर्ग/विधि है जिसे मैं विश्वास नहीं कर सकता कि यह संस्करणों के बीच गायब हो गया है। मैंने स्थापित स्कैला संस्करण 2.11 था। जाहिर है कि मेवेन से 2.10.4 में क्या खींचा जाता है।

जब भी आप "NoSuchMethodError" देखते हैं तो यह हमेशा का अर्थ है कि एक संस्करण संघर्ष है; यह एक सवाल है क्यों।

1

मुझे अभी भी एक ही समस्या का सामना करना पड़ा। यह पता चला कि मैंने अक्का के गलत संस्करण को डाउनलोड किया था जिसमें स्कैला-लाइब्रेरी-2.10.एक्स शामिल था, जबकि मेरी परियोजना 2.11.6 का उपयोग करती है। अक्का के नवीनतम संस्करण को पकड़ना, जिसमें 2.11.5 शामिल है, समस्या हल हो गई।

तो, ऐसा लगता है कि यह एक संगतता मुद्दा है, इसलिए मैं भविष्य में निर्भरताओं की जांच करूंगा।

0

मुझे पता चला है कि यह स्केलटेस्ट और स्कैलेमॉक के विभिन्न संस्करणों के कारण हो सकता है। बाद Maven

<dependency> 
     <groupId>org.scalatest</groupId> 
     <artifactId>scalatest_2.11</artifactId><!-- this was previously 2.10 --> 
     <version>2.2.4</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.scalamock</groupId> 
     <artifactId>scalamock-scalatest-support_2.11</artifactId> 
     <version>3.2</version> 
     <scope>test</scope> 
    </dependency> 
2
अन्य लोगों की तरह

यहां कहा, मैं वजह से एक ही समस्या हो रही थी मैं कुछ 2.11 पर scalatest होने के बावजूद 2.10 लाइब्रेरी का उपयोग करने के लिए किया था।

<!-- http://www.scalactic.org/ --> 
<dependency> 
    <groupId>org.scalactic</groupId> 
    <artifactId>scalactic_2.11</artifactId> 
    <version>${scalactic.version}</version> 
    <scope>test</scope> 
</dependency> 

<!-- http://www.scalatest.org/ --> 
<dependency> 
    <groupId>org.scalatest</groupId> 
    <artifactId>scalatest_2.11</artifactId> 
    <version>${scalactic.version}</version> 
    <scope>test</scope> 
</dependency> 

Chech कि सभी पुस्तकालयों है कि आप प्रयोग कर रहे हैं

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>${spark.version}</version> 
    <scope>provided</scope> 
</dependency> 

करने के लिए

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.11</artifactId> 
    <version>${spark.version}</version> 
    <scope>provided</scope> 
</dependency> 

गुण के रूप में करने के बाद ही स्काला संस्करण में हैं

<properties> 
    <scala.tools.version>2.11.8</scala.tools.version> 
    <scala.version>2.11.8</scala.version> 
    <scalactic.version>3.0.0</scalactic.version> 

    <!-- Library Versions --> 
    <spark.version>2.0.0</spark.version> 
    .... 
</properties> 
संबंधित मुद्दे