web-dev-qa-db-fra.com

Comment utiliser Scala dans IntelliJ IDEA (ou: pourquoi est-il si difficile de travailler IDE pour Scala)?

J'ai récemment arrêté d'essayer d'utiliser Scala dans Eclipse (des opérations de base telles que l'achèvement ne fonctionnent pas). Alors maintenant, j'essaie IntelliJ. Je ne vais pas très loin.

J'ai été en mesure d'éditer des programmes (dans la coloration syntaxique et l'achèvement ... oui!). Mais je ne parviens pas à exécuter le plus simple "Hello World". C'était l'erreur d'origine:

 Scala signature Predef a une version incorrecte 
 Attendu 5.0 
 Trouvé: 4.1 dans .... scala-library.jar 

Mais c'était hier avec IDEA 9.0.1. Voir ci-dessous...

METTRE À JOUR

Aujourd'hui, j'ai désinstallé IntelliJ 9.0.1 et installé 9.0.2 Early Availability, avec la version 4/14 stable du plug-in Scala.

Ensuite, je configure un projet à partir de zéro via les assistants:

  • nouveau projet à partir de zéro
  • JDK est 1.6.u20
  • accepte la valeur par défaut (projet) au lieu de global/module
  • accepter le téléchargement de Scala 2.8.0beta1 dans le dossier lib du projet

Créé une nouvelle classe:

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

Pour mes efforts, j'ai maintenant une nouvelle erreur :)

C'est ici:

Erreur interne Scalac: classe Java.lang.ClassNotFoundException [Java.net.URLClassLoader $ 1.run (URLClassLoader.Java:202), Java.security.AccessController.doPrivileged (méthode native), Java.net.URLClassLoader.findClass (URLClassLoader.Java : 190), Java.lang.ClassLoader.loadClass (ClassLoader.Java:307), Sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.Java:301), Java.lang.ClassLoader.loadClass (ClassLoader.Java:248) , Java.lang.Class.forName0 (méthode native), Java.lang.Class.forName (Class.Java:169), org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main (ScalacRunner.Java:72) ]

MISE À JOUR FINALE

J'ai désinstallé 9.0.2 EA et réinstallé 9.0.1, mais cette fois-ci, j'ai utilisé la version 2.7.3 de Scala plutôt que la version 2.7.6 par défaut, car 2.7.3 est celui présenté dans les captures d'écran du site Web IntelliJ ( Je suppose que les captures d’écran prouvent qu’elles ont effectivement testé cette version!). Maintenant tout fonctionne !!!

48
Alex R

J'ai rencontré la même erreur scalac lors de la tentative d'exécution d'un projet Scala dans Intellij Idea 9.0.2 et j'ai réussi à trouver une solution par hasard :). Voici les étapes que j'ai suivies pour créer et exécuter le projet.

J'ai créé un projet Scala dans Intellij Idea 9.0.2 final (publié aujourd'hui). J'ai installé le plugin Scala, redémarré le IDE et créé un nouveau projet Scala (nommé "TestScala") avec scala-2.8.0.Beta1 comme bibliothèque de projet. Une fois le projet créé et les bibliothèques scala téléchargées, j'ai créé un fichier Test.scala avec le contenu suivant:

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

Après cela, j'ai créé une configuration de lancement ("Edit Configurations") en choisissant le modèle "Application". Je mets en test la classe principale et choisis le nom du projet ("TestScala") dans la liste déroulante "Utiliser le chemin de classes et le JDK du module". Lorsque j'exécute la configuration, j'obtiens la même erreur que celle que vous avez signalée ("Erreur interne Scalac: classe Java.lang.ClassNotFoundException").

Maintenant vient la partie bizarre :). Je fais un clic droit sur le projet, choisissez "Paramètres du module", regarde tous les paramètres mais je ne change rien. Cliquez sur "appliquer" et "ok", essayez à nouveau d'exécuter la configuration et ça marche :).

J'utilise Intellij Idea 9.0.2 la version finale (build 95-66); Ubuntu 9.10 et JDK 1.6.0_18. Je dois également mentionner que j'avais un JDK configuré dans Intellij, sinon il y a une étape supplémentaire pour le configurer. 

METTRE À JOUR:

Lors de la vérification du paramétrage du module, il faut cliquer sur Module-> Scala et Facettes-> Scala (développez-le et cliquez sur Scala (Nom du projet)). Ces deux paramètres concernent le compilateur scala et l'emplacement de la bibliothèque scala. J'imagine que ces valeurs ne sont pas correctement définies lors de la création du projet mais qu'elles sont enregistrées une fois que l'utilisateur les a touchées et enregistre les paramètres. 

20
Andrei Oprisan

L'installation du plug-in est une condition préalable.

La prochaine chose à faire est de définir une bibliothèque (globale ou spécifique au projet; j'utilise global) qui contient les fichiers JAR du compilateur Scala et (au minimum, c'est scala-compiler.jar et scala-library.jar). L'ajout de fichiers JAR source et d'un fichier JAR ou d'URL de documentation est également une bonne idée. Faites ensuite de cette bibliothèque une dépendance des modules de votre projet incluant du code Scala.

Enfin, recherchez les facettes Scala dans ces modules et désélectionnez les deux cases à cocher.

6
Randall Schulz

Je viens juste de faire une nouvelle installation et j'ai exactement le même problème moi-même ... Il s'est avéré que, parce que j'avais créé le fichier dans le paquet racine, IDEA avait ajouté une instruction de paquet en haut nommant un paquet . Je suppose que cela a ensuite été compilé en tant que "objet de package Main" - syntaxe valide dans la version 2.8? Quoi qu'il en soit, j'ai supprimé la ligne qui dit paquet et tout a bien fonctionné.

2
Graham Lea

J'ai eu le même problème hier en essayant de le configurer. La solution est assez simple, il vous suffit de définir scala quelque part dans les paramètres du projet.

1
Theq

J'utilise Netbeans pour écrire des programmes scala. Jusqu'à présent, cela fonctionne très bien avec mes codes. Vous pouvez essayer le plugin ici: http://wiki.netbeans.org/Scala68v1 .

0
Bruce Li

Je recevais cette erreur et je devais également cliquer avec le bouton droit de la souris sur le projet et sur "Ouvrir les paramètres du module". Cependant, c’était plus qu’appliquer. Je devais m'assurer que ma racine de contenu était correcte pour chaque projet. Pour une raison quelconque, il existe des dossiers source et de test incorrects.

Mon projet utilise maven comme principal outil de génération et l’importation du projet dans Intellij est probablement ce qui a créé ces paramètres incorrects.

0
OleTraveler

Vous mélangez du code compilé avec deux versions différentes de Scala.

0
Daniel C. Sobral

J'ai eu un problème similaire, après this les instructions de publication de blog ont résolu le problème pour moi

0
LiorH