इंटेलीज पर स्काला क्लास बनाने में असमर्थ


123

मैं अभी स्काला सीखना शुरू कर रहा हूं। मैंने IntelliJ के लिए स्काला प्लगइन स्थापित किया है, और एक नया स्काला प्रोजेक्ट बनाया है। लेकिन जब मैं नया स्काला क्लास बनाने के लिए src फ़ोल्डर पर राइट-क्लिक करता हूं, तो ऐसा करने का कोई विकल्प नहीं है। क्या मैं कुछ भूल रहा हूँ?


1
क्या आपने स्काला एसडीके निर्दिष्ट किया है? यदि आप प्रोजेक्ट को ठीक से सेट करते हैं और एसडीके निर्दिष्ट करते हैं तो यह काम करना चाहिए।
ईवैन।

1
मैंने उसी मुद्दे की प्रतिकृति बनाने की कोशिश की लेकिन मुझे स्कैला फ़ाइल बनाने के लिए मिलता है। मैं आपको एक काम के बारे में सुझाव दे सकता हूं: एक नया प्रोजेक्ट बनाएं और स्कैला में sbt प्रोजेक्ट चुनें और फिर src.main के अंदर एक नई स्कैला फाइल बनाएं। मुझे उम्मीद है कि मदद करता है या आप intellij की सेटिंग्स रीसेट कर सकते हैं।
शिव ४

@ Evan058 ने कहा, यह एसडीके है। किसी कारण से, इंटेलीज कभी-कभी स्केला एसडीके को स्वचालित रूप से नहीं उठाता है। और अगर यह कॉन्फ़िगर नहीं है, तो ऐसा होता है।
निक्स जू

एक और संभावना यह है कि आप स्काला स्रोतों के लिए गलत पथ का उपयोग कर रहे हैं। उन्हें src\main\scalaया में जाना चाहिए src\test\scala। यदि आपने sbtस्थापित किया है, तो आप इसे अपने प्रोजेक्ट डायर और इनवाइट कमांड में लॉन्च कर सकते हैं inspect scalaSource, और यह आपको दिखाएगा कि स्काला के स्रोत कहाँ होने चाहिए।
हस्सेमुलेटर

कृपया अन्य उत्तरों के अंदर टिप्पणियाँ देखें। परियोजना में एक स्थान इस त्रुटि का कारण हो सकता है।
खलनायकोस

जवाबों:


263

अपनी परियोजना "राइट फ्रेमवर्क सपोर्ट " पर राइट क्लिक करें और स्काला फ्रेमवर्क चुनें, फिर संकुल पर राइट क्लिक करके आप स्काला क्लास बना सकते हैं।

इस के बाद, सही पर क्लिक करें src> Mark directory as> Sources Root

इन दोनों को करने से आपकी समस्या ठीक हो जानी चाहिए!


7
केवल स्कैला स्क्रिप्ट जोड़ सकते हैं, लेकिन कोई वर्ग नहीं? कोई विचार?
cs0815

7
मुझे भी यही समस्या है और मैं ऐड फ्रेमवर्क मेनू में स्कैला फ्रेमवर्क नहीं देखता
माइकल पी

1
ध्यान से देखो। स्काला क्लास पहले खंड में है, लेकिन स्कैला लिपि भी सूची में है
एलेक्जेंडर

इसके अलावा यह कदम केवल तभी काम करेगा जब आपने फ़ाइल> सेटिंग्स के तहत अपनी सही PROXY सेटिंग्स को अपडेट किया हो।
नैनोसॉफ्ट 13

1
मेरे पास स्केला प्लग लगाए गए हैं, लेकिन स्काला फ्रेमवर्क का विकल्प बाईं ओर नहीं है, केवल मावेन
एसीमौनी

107

मुझे यह समझ में आया, सही स्रोत पर क्लिक करें> स्रोत के रूप में मार्क निर्देशिका>।

अब फिर से प्रयास करें।


2
महान! अपने उत्तर और शीर्ष उत्तर को जोड़कर चाल चली!
हिजितौन

मुझे यह और शीर्ष उत्तर दोनों करना था!
जलेसलेहम

1
यह शीर्ष होना चाहिए।
शिकारी

22

मैं सिर्फ यह मुद्दा था, भी। यह पता चला कि IntelliJ ने मेरे src/main/scalaफ़ोल्डर को "स्रोत" फ़ोल्डर के रूप में चिह्नित नहीं किया था ।

ऐसा करने के लिए: Project Structure -> Modules ->राइट क्लिक फ़ोल्डर और Mark as "Source"(नीला)

इसी प्रकार src/main/testफ़ोल्डर को परीक्षण फ़ोल्डर के रूप में चिह्नित नहीं किया गया था। उन फ़ोल्डरों को उचित रूप से चिह्नित करने के बाद मैं स्कैला कक्षाएं जोड़ने में सक्षम था।


यह सही है - हालांकि मैंने इसे नीचे से थोड़ा अलग (और तेज) तरीके से किया था।
user1761806

8

मुझे यह समस्या तब हुई जब मैंने नाम के रिक्त स्थान के साथ एक नई परियोजना बनाई। उदाहरण के लिए "हेल वीव"। "हेलवव" या प्रोजेक्ट नाम के समान उपयोग करने से ठीक काम लगता है


2
मुझे यह समस्या एक संख्या के साथ एक परियोजना का नाम शुरू करने में भी थी। नाम बदलने के बाद, सब कुछ ठीक काम किया।
user3846506

बस नमक का मेरा अनाज जोड़ने के लिए। हां, प्रोजेक्ट फ़ोल्डर में एक स्थान यह व्यवहार बनाता है।
खलनायकोस

1
अगर एक ही समस्या थी और @ user3846506 की टिप्पणी मेरे लिए जवाब थी, तो मैंने बिना नाम के एक नंबर के प्रोजेक्ट को फिर से बनाया और जैसे ही प्रोजेक्ट खोला गया, स्कैला फोल्डर नीले रंग की बजाय ग्रे हो गया।
शूरिकेन

7

Src Scala फ़ोल्डर पर राइट क्लिक करें :)

राइट-क्लिक "स्काला" का एनीमेशन


15
वर्णित समस्या वही है जो आप दिखा रहे हैं। उस मेनू में कोई स्काला क्लास नहीं। यह एनीमेशन मददगार नहीं है
माइकल पी

3
एनीमेशन दर्शाता है कि मेनू संदर्भ संवेदनशील हैं। "स्काला" फ़ोल्डर पर राइट क्लिक करने से "स्काला क्लास" का चयन करने का विकल्प मिलता है; "src" फ़ोल्डर पर राइट क्लिक नहीं करता है।
कीथ पिंसन

तो क्या यह सामान्य व्यवहार है और सभी ट्यूटोरियल पुराने हैं?
user1761806

@ user1761806 मैंने कभी कोई समीक्षा नहीं की है इसलिए मैं आपको यह नहीं बता सकता कि कोई ट्यूटोरियल पुराना है या नहीं। उस विषय पर, मुझे उम्मीद है कि संदर्भ-संवेदनशील मेनू के बारे में यह उत्तर पुराना हो जाएगा, लेकिन InteliJ 2017.2 के रूप में एनीमेशन अभी भी निराशाजनक है, भले ही यूआई बदल गया हो।
कीथ पिंसन

2
एनीमेशन मददगार नहीं है। आपके पास निश्चित रूप से निर्देशिकाएं हो सकती हैं जैसे / scala (और इसे चिह्नित करें सूत्रों का रूट) और फिर भी नया स्काला क्लास दिखाई नहीं देगा। सही उत्तर @ माजिको द्वारा
कुमार वैभव

5

IDEA 2016.2.5 में

एक नए एसबीटी या स्काला प्रोजेक्ट से।

  • ओपन प्रोजेक्ट स्ट्रक्चर
  • प्रोजेक्ट टैब पर अपना जेडीके जोड़ें (एसडीके टैब में भी दिखाई देना चाहिए)
  • वैश्विक पुस्तकालयों के तहत स्काला एसडीके जोड़ें।

अफसोस की बात है कि इसे केवल अपने build.SBT में जोड़ने से IDE व्यवहार प्रभावित नहीं होता है।


5

IntelliJ IDE 2019.1 अंतिम पर, इस स्क्रीन की तरह FRAMEWORK स्काला को सक्षम करें:

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


मदद के लिए धन्यवाद :) यह मेरे लिए IntelliJ 2019 के लिए काम किया
राजीव सिंह

छवियों के साथ उत्तर के लिए धन्यवाद ... यह आकर्षण की तरह काम किया!
विकट

5

मुझे भी यही समस्या थी और मैंने जो किया वह प्रोजेक्ट पर राइट क्लिक किया गया था ---> इसके बाद Add फ्रेमवर्क सपोर्ट चुनें -> बाएँ हाथ के कोने में Groovy, Kotlin, Maven और Scala .---> का उल्लेख किया गया था। सूची से मैं स्काला का चयन करता हूं, लेकिन फिर भी समस्या थी क्योंकि लिबरी निर्दिष्ट नहीं थी ---> क्रिएट पर क्लिक किया और इसने मुझे संस्करण चुनने के लिए कहा क्योंकि मैंने 2.11.12 स्थापित किया था, मैंने इसे चुना और इसे डाउनलोड करना शुरू कर दिया। एक बार यह डाउनलोड हो जाने के बाद मैंने स्काला का चयन किया और यह मुद्दा तय हो गया।


धन्यवाद। इसने वास्तव में मेरी मदद की।
थियागो मेलो

4

Src फ़ोल्डर में जाएं और मार्क को डायरेक्टरी के रूप में चुनें और फिर सोर्स रूट नामक विकल्प चुनें, जो आपकी समस्या को ठीक करेगा।


3

libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.50"target में जोड़ें -> built.sbtIntelliJ IDEA 2017 के लिए यह काम करता है


यह मेरे लिए IntelliJ IDEA 2018.3 में काम करता है, सिवाय इसके कि मैंने संस्करण संख्या को बदल दिया 1.1.1
इवान नोल्स

2
  1. नई ढाल परियोजना (जावा) बनाई गई
  2. नए मॉड्यूल "स्काला" को स्रोत के रूप में / src / main / और "निर्देशिका बनाएँ" में जोड़ें ...
  3. build.gradle में जोड़े गए निर्भरता:

    group 'example-scala'
    version '1.0-SNAPSHOT'
    
    apply plugin: 'java'
    apply plugin: 'scala'
    
    sourceCompatibility = 1.8
    
    repositories {
         mavenCentral()
    }
    
    dependencies {
       compile 'org.scala-lang:scala-library:2.12.6'
       testCompile 'org.scalatest:scalatest_2.11:3.0.5'
       testRuntime 'org.scala-lang.modules:scala-xml_2.11:1.0.6'
       testCompile group: 'junit', name: 'junit', version: '4.12'
    
    } 

2

सूत्रों के चयन के बाद मेरे मामले में इसने मुझे कोई स्काला क्लास विकल्प नहीं दिखाया, फिर मैं जनरेट किए गए स्रोत रूट का चयन करता हूं, src> मार्क निर्देशिका के रूप में> जेनरेट किए गए स्रोत रूट पर राइट क्लिक करें। इसने मेरे लिए काम किया


1

डिफ़ॉल्ट रूप से Intellij कई बार निर्भरता नहीं उठाता है। आपको एक अलग sbt या मावेन परियोजना बनाने की आवश्यकता होगी और फिर इसे Intellij पर आयात करना होगा।

अगर आप Java Scala Mixin प्रोजेक्ट बनाना चाहते हैं तो आप इस ब्लॉग पोस्ट को फॉलो कर सकते हैं । और फिर इसे Intellij में आयात करें।

या अगर आपका सिर्फ स्काला सीखने की कोशिश कर रहा है।

आप इस मावेन आधारित स्काला स्टार्टर टेम्पलेट को डाउनलोड कर सकते हैं और इसे इंटेलीज में आयात कर सकते हैं और फिर इस पर काम जारी रख सकते हैं।

नोट: आपको मॉड्यूल के लिए स्रोतों को निर्दिष्ट करना पड़ सकता है

प्रोजेक्ट संरचना -> मॉड्यूल टैब


1
    You can add the scala maven plugin reference in the pom.xml as below 

 <build>
    <sourceDirectory>src/main/scala</sourceDirectory>
    <testSourceDirectory>src/test/scala</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <scalaCompatVersion>2.11</scalaCompatVersion>
                    <scalaVersion>2.11.8</scalaVersion>
                </configuration>
            </plugin>
        </plugins>
    </build>

    Once you do this and build you will be able to see the option of the scala class.

1
यह तब काम करेगा जब आप mavan फ्रेमवर्क के साथ प्रोजेक्ट बना रहे हैं, और SBT के मामले में आपने build.sbt फ़ाइल को जोड़ा है
चेतन हीरापारा

1
@ChicksPatel हाँ यह तब काम करेगा जब आप केवल मावेन फ्रेमवर्क के साथ प्रोजेक्ट बना रहे हैं। जैसा कि इस प्रश्न में कोई विशिष्ट रूपरेखा का उल्लेख नहीं किया गया था, मुझे लगा कि उत्तर किसी की मदद कर सकता है।
निकुंज काकडिया

1

मुझे भी इसी मुद्दे का सामना करना पड़ा, स्केला फ़ाइल विकल्प इंटेलीज आइडिया संपादक में दिखाई नहीं दे रहे थे क्योंकि स्काला एसडीके स्थापित नहीं था। तो आप स्काला के लिए एसडीके स्थापित करने के बाद इस मुद्दे से छुटकारा पाएं।


1
टिप्पणी होनी चाहिए
निष्पादन योग्य

1

मेरे लिए हल किए गए निम्न चरणों का पालन करें:

  • अपने Intellij IDE में scala प्लगइन जोड़ें । (प्लगइन्स को फ़ाइल में नेविगेट करके जोड़ा जा सकता है -> सेटिंग्स -> प्लग इन)
  • स्कैला प्लगइन सक्षम करें
  • IDE को पुनरारंभ करें

0

आपको बस अपने प्रोजेक्ट नाम के ऊपर स्थित ड्रॉप-डाउन मेनू से 'प्रोजेक्ट' विकल्प के बजाय 'पैकेज' का चयन करना होगा।


0

मैंने इस व्यवहार का अनुभव किया जब फ़ोल्डर को स्रोत फ़ोल्डर (नीला फ़ोल्डर प्रतीक) के रूप में सही ढंग से चिह्नित नहीं किया गया था। यदि ऐसा है, तो बस पूरी परियोजना पर राइट-क्लिक करें और ओपन मॉड्यूल सेटिंग्स चुनें जहां आप फिर संबंधित फ़ोल्डर को स्रोत के रूप में चिह्नित कर सकते हैं: मॉड्यूल सेटिंग्स जहां आप स्रोत फ़ोल्डर के रूप में src का चयन कर सकते हैं


0

मुझे एक समान समस्या थी और मैंने जो हल करने के लिए किया था वह सिर्फ src / main / scala पर राइट क्लिक करके एक पैकेज बनाना है। पैकेज बन जाने के बाद, पैकेज पर राइट क्लिक करें और आपको स्कैला क्लास विकल्प खोजने में सक्षम होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.