كيفية استخدام Scala في Idea Intellij (أو: لماذا يصعب الحصول على IDE العاملة لـ Scala)؟

StackOverflow https://stackoverflow.com/questions/2668153

سؤال

لقد تخليت مؤخرًا عن محاولة استخدام Scala في Eclipse (لا تعمل الأشياء الأساسية مثل الانتهاء). لذا الآن أحاول Intellij. أنا لا أذهب بعيدا.

لقد تمكنت من تحرير البرامج (ضمن تسليط الضوء على بناء الجملة والانتهاء ... ياي!). لكنني غير قادر على الركض حتى أبسط "Hello World". كان هذا هو الخطأ الأصلي:

Scala signature Predef has wrong version
Expected 5.0
found: 4.1 in .... scala-library.jar

لكن ذلك كان بالأمس مع فكرة 9.0.1. انظر أدناه...

تحديث

اليوم قمت بإلغاء تثبيت Intellij 9.0.1 ، وقمت بتثبيت 9.0.2 التوفر المبكر ، مع الإصدار المستقر 4/14 من المكون الإضافي Scala.

ثم أقوم بإعداد مشروع من الصفر عبر المعالجات:

  • مشروع جديد من الصفر
  • JDK هو 1.6.U20
  • اقبل الافتراضي (المشروع) بدلاً من الوحدة العالمية / الوحدة النمطية
  • اقبل تنزيل Scala 2.8.0beta1 في مجلد Lib للمشروع

أنشأت فصلًا جديدًا:

object hello {
  def main(args: Array[String]) {
    println("hello: " + args);
  }
}

لجهودي ، لدي الآن خطأ جديد تمامًا :)

ها هو:

خطأ داخلي في Scalac: class java.lang.classnotfoundException [java.net.urlclasslazloader $ 1.run (urlClassloader.java:202) ، java.security.accesscontroller.doprivileged (method native) ، : 190) ، java.lang.classloader.loadclass (classloader.java:307) ، sun.misc.launcher $ appclassloader.loadclass (Launcher.java:301) ، java.lang.classload.loadclass (classloader.java:248) ، java.lang.class.forname0 (الطريقة الأصلية) ، java.lang.class.forname (class.java:169) ، org.jetbrains.plugins.scala.compiler.rt.scalacrunner.main (Scalacrunner.java:72)

التحديث النهائي

قمت بإلغاء تثبيت 9.0.2 EA وأعدت تثبيت 9.0.1 ، لكن هذه المرة ذهبت مع إصدار 2.7.3 من Scala بدلاً من الافتراضي 2.7.6 ، لأن 2.7.3 هو الذي يظهر في لقطات الشاشة في موقع Intellij ( أعتقد أن لقطات الشاشة تثبت أنها اختبرت هذا الإصدار بالفعل!). الآن كل شيء يعمل !!!

هل كانت مفيدة؟

المحلول

لقد واجهت نفس خطأ Scalac عند محاولة تشغيل مشروع Scala في Idea Idea 9.0.2 وتمكنت من العثور على حل عن طريق الصدفة :). هذه هي الخطوات التي اتخذتها في إنشاء المشروع وتشغيله.

لقد أنشأت مشروع Scala في Idea Idea 9.0.2 نهائي (تم إصداره اليوم). لقد قمت بتثبيت المكون الإضافي Scala ، وأعدت تشغيل IDE وأنشأت مشروع Scala جديد (باسم TestScala) مع Scala-2.8.0.beta1 كمكتبة للمشروع. بمجرد إنشاء المشروع وتنزيل مكتبات Scala ، قمت بإنشاء ملف test.scala مع المحتوى التالي:

object Test  {
 def main(args:Array[String]){
   println("hello")
 }
}

بعد ذلك ، قمت بإنشاء تكوين إطلاق ("تحرير التكوينات") ، واختيار قالب "التطبيق". لقد قمت بتعيين اختبار فئة رئيسي واختيار اسم المشروع ("TestScala") في مربع التحرير والسرد "Use ClassPath و JDK of Module". عندما أقوم بتشغيل التكوين ، أحصل على نفس الخطأ الذي أبلغته ("خطأ داخلي Scalac: class java.lang.classnotfoundException").

الآن يأتي الجزء الغريب :). انقر بزر الماوس الأيمن على المشروع ، واختر "إعدادات الوحدة النمطية" ، وإلقاء نظرة على جميع الإعدادات ولكن أنا لا أغير أي شيء . انقر فوق "تطبيق" و "موافق" ، حاول تشغيل التكوين مرة أخرى و إنها تعمل :) .

يمكنني استخدام Idea Idea 9.0.2 الإصدار النهائي (بناء 95-66) ؛ Ubuntu 9.10 و JDK 1.6.0_18. يجب أن أذكر أيضًا أن لدي JDK تم تكوينه في Intellij ، وإلا هناك خطوة إضافية لتكوينها.

تحديث:

عند التحقق من إعداد الوحدة ، يحتاج المرء إلى النقر على الوحدة النمطية-> سكالا و الجوانب-> Scala (قم بتوسيعه وانقر على Scala (ProjectName)) . كل من هذه الإعدادات تدور حول موقع مترجم سكالا ومكتبة سكالا. أعتقد أن هذه القيم لا يتم تعيينها بشكل صحيح عند إنشاء المشروع ولكن يتم حفظها بمجرد أن يمسها المستخدم ويحفظ الإعدادات.

نصائح أخرى

للإجابة على سؤالك ، من الصعب الحصول على IDE العاملة لـ Scala لسببين: (أ) Scala بدأت للتو في الوصول إلى جمهور واسع و (ب) بسبب (أ) ، لا توجد حالة عمل لقضاء الوقت في Scala IDE.

وأيضًا ، إذا كنت كبيرًا في السن بما يكفي لتراجع عقلك وشابًا بما يكفي لتتذكره ، فستعلم أنه خلال السنوات الخمس أو أكثر من جافا الأولى ، كنا عالقين بأدوات جيدة مثل JBuilder التي لم تفعل أكثر من مجرد ترجمة رمز عندما قلت ذلك - لا يوجد خطأ في تسليط الضوء ، لا يوجد استشهاد تلقائي ، وكلمة إعادة أن تكون موجودة. إذا كنت تريد أن تكون رائدة ، فيجب أن تكون مستعدًا لقطع بعض الطرق بنفسك ، أو على الأقل بوش.

أعلم أن هذا لن يساعدك ، لكنني استخدمت بنجاح فكرة Scala على Linux و Mac و Windows. عادةً ما يتم تثبيت Scala SDK في مكان ما محليًا ، وبين الفكرة في ذلك بدلاً من استخدام خيار "التنزيل".

في الوقت الحاضر ، أنا أستخدم في الغالب إصدار EAP من Idea 9 على Mac OS X مع Scala 2.8.0.beta1-rc5 وهو يعمل بشكل جيد (باستثناء أن FSC لا يبدو أنه يعمل مع مصادر مختلطة).

يمكنك تجربة حظك في منتدى مناقشة Idea Scala Plugin, ، على الرغم من أنه لم يكن لدي الكثير من الردود على منشوراتي هناك.

يعد تثبيت المكون الإضافي متطلبًا أساسيًا.

الشيء التالي الذي يجب عليك فعله هو تحديد مكتبة (عالمية أو خاصة بالمشروع ؛ أنا أستخدم عالمي) تحمل مكتبة Scala و ملفات جرة التحويل البرمجي (كحد أدنى ، هذا scala-compiler.jar و scala-library.jar). تعد إضافة الجرار المصدر وجرة أو عناوين URL فكرة جيدة أيضًا. ثم اجعل هذه المكتبة اعتمادًا على أي وحدات في مشروعك تتضمن رمز Scala.

أخيرًا ، ابحث عن جوانب Scala في تلك الوحدات النمطية وقم بإلغاء تحديد كل من صناديق الاختيار هناك.

لقد قمت للتو بتثبيت جديد وكان لدي نفس المشكلة بالضبط بنفسي. اتضح أنه ، لأنني أنشأت الملف في حزمة الجذر ، أضافت IDEA بيانًا في الجزء العلوي بتسمية الحزمة. أفترض أن هذا بعد ذلك تم تجميعه كـ "كائن حزمة رئيسي" - بناء جملة صالح في 2.8؟ على أي حال ، لقد حذفت الخط الذي قال الحزمة وكان كل شيء على ما يرام.

واجهت نفس المشكلة أمس أثناء محاولتي إعدادها. الحل بسيط للغاية ، عليك فقط تعيين Scala في مكان ما في إعدادات المشروع.

أنت تقوم بخلط رمز تم تجميعه مع نسختين مختلفتين Scala.

يمكنني استخدام NetBeans لكتابة برامج Scala. حتى الآن يعمل بشكل جيد للغاية مع رموزاتي. يمكنك تجربة البرنامج المساعد هنا: http://wiki.netbeans.org/scala68v1.

كنت أحصل على هذا الخطأ واضطررت أيضًا إلى النقر بزر الماوس الأيمن على المشروع و "إعدادات الوحدة النمطية المفتوحة". ومع ذلك ، كان أكثر من مجرد ضرب تطبيق. اضطررت إلى التأكد من أن جذر المحتوى الخاص بي كان صحيحًا لكل مشروع. لسبب ما ، كان هناك بعض مجلدات المصدر والاختبار غير الصحيحة.

يستخدم مشروعي Maven كأداة بناء رئيسية واستيراد المشروع إلى Intellij ربما يكون ما أنشأ هذه الإعدادات غير الصحيحة.

واجهت مشكلة مماثلة ، متابعة هذه تعليمات نشر المدونة حل المشكلة بالنسبة لي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top