2010-04-13 12 views
46

मैं स्कैला के साथ शुरू करने की कोशिश कर रहा हूं और शुरुआती द्वार से बाहर नहीं निकल सकता।स्कैला मुझे "परिभाषा की अवैध शुरुआत" दे रहा है

लाइन

package x 

से मिलकर एक फाइल मुझे

error: illegal start of definition

क्या एक्स है और जहां मैं फ़ाइल डाल की परवाह किए बिना की परवाह किए बिना देता है (मैं एक सिद्धांत था कि मैं जगह पड़ा पैकेज परिभाषा से मेल खाने के लिए निर्देशिका पदानुक्रम में फ़ाइल करें, लेकिन नहीं)। मुझे वेब साइट से और आरईपीएल के उदाहरण कोड के साथ एक ही त्रुटि मिलती है।

उत्तर

55

ऐसा लगता है कि आप स्केल स्क्रिप्ट में package सदस्यता घोषित करने की कोशिश कर रहे हैं (scala कमांड का उपयोग करके चलाएं) या आरईपीएल में।

केवल scalac के साथ संकलित किए गए वर्गों और वस्तुओं को परिभाषित करने वाली फ़ाइलों को पैकेज से संबंधित परिभाषित किया जा सकता है।

जब आप किसी स्क्रिप्ट या आरईपीएल सत्र में कोड चलाते हैं, तो दृश्यों के पीछे यह वास्तव में किसी ऑब्जेक्ट की विधि के अंदर संकलित होता है, जिसमें एक पैकेज घोषणा का दायरा कानूनी नहीं होता है।

+9

तो फिर आप स्कैला डाउनलोड संग्रह के 'उदाहरण' फ़ोल्डर से कोड कैसे चलाएंगे? उनमें से अधिकांश में '' पैकेज उदाहरण 'रेखा है और सामग्री मेरे नियमों पर चिपक जाती है। मैं उन्हें 'स्केलैक' कर सकता हूं, लेकिन उन्हें उदाहरण के साथ चला रहा हूं 'स्कैला-क्लासपाथ। सॉर्ट'' मुझे एक 'java.lang..NoClassDefFoundError'' देता है !? – ThomasH

+1

@ThomasH > scalac ScalaFileWithPackageLine.scala > स्केला fully.qualified.name.of.topLevel.ScalaObject – tdmadeeasy

0

मुझे यह त्रुटि नहीं मिली है। आप इसे कैसे संकलित कर रहे हैं? और, वैसे, क्या वेबसाइट? आरईपीएल के लिए, यह संकुल स्वीकार नहीं करता है। संकुल केवल संकलित कोड के लिए हैं।

+2

वाह, यह सचमुच * कभी नहीं * मेरे लिए हुआ है कि संकलक और दुभाषिया अलग आदेश के नाम हो सकता है। मैं पाइथन के बारे में सोच रहा था और स्केलैक के बजाय स्कैला का उपयोग कर रहा था। "क्या वेबसाइट?" - मैं http://www.scala-lang.org/ का उत्तर देने वाला था लेकिन मैं गया और चेक किया: उदाहरण कोड (उत्कृष्ट) से था http://max-l.github.com/Squeryl/ (qv)। आप जानते हैं कि उन छोटे डू, डुह, डर्प शोर को आप बहुत पसंद करते हैं। – Malvolio

+0

मुझे एक ही त्रुटि है: मैं इस फ़ोल्डर में हूं: https://github.com/Sergey80/scala-samples/tree/master/src/main/scala/partial_function। ऐसा करने का प्रयास करें: scala PartialToReal.scala – ses

+1

यह एक टिप्पणी की तरह है और उत्तर नहीं। –

20

स्कैला 2.11.0-एम 7 के बाद से आप :paste -raw (SI-5299 जारी करने के लिए ठीक कर सकते हैं) का उपयोग कर सकते हैं। यह विकल्प आरईपीएल में संकुल को परिभाषित करने की अनुमति देता है:

scala> :paste -raw 
// Entering paste mode (ctrl-D to finish) 

package Foo 

class Bar 

// Exiting paste mode, now interpreting. 


scala> import Foo._ 
import Foo._ 

scala> new Bar 
res1: Foo.Bar = [email protected] 
संबंधित मुद्दे