48 votes

Comment utiliser Scala dans IntelliJ IDEA (ou : pourquoi est-il si difficile d'obtenir un IDE fonctionnel pour Scala) ?

J'ai récemment abandonné l'idée d'utiliser Scala dans Eclipse (les fonctions de base comme la complétion ne fonctionnent pas). J'essaie donc maintenant IntelliJ. Je ne vais pas très loin.

J'ai été capable d'éditer des programmes (avec la coloration syntaxique et la complétion... yay !). Mais je suis incapable d'exécuter même le plus simple "Hello World". C'était l'erreur originale :

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

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

UPDATE

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

Ensuite, je configure un projet à partir de zéro grâce aux assistants :

  • nouveau projet à partir de zéro
  • JDK est 1.6.u20
  • accepter 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éation d'une nouvelle classe :

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

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

C'est ici :

Erreur interne Scalac : classe java.lang.ClassNotFoundException [java.net.URLClassLoader$1.run(URLClassLoader.java:202), java.security.AccessController.doPrivileged(Native Method), 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é la version 9.0.2 EA et réinstallé la version 9.0.1, mais cette fois avec la version 2.7.3 de Scala au lieu de la version 2.7.6 par défaut, car la version 2.7.3 est celle qui est montrée dans les captures d'écran sur le site Web d'IntelliJ (je suppose que les captures d'écran prouvent qu'ils ont réellement testé cette version !) Maintenant tout fonctionne ! !!

20voto

user318266 Points 184

J'ai rencontré la même erreur scalac en essayant d'exécuter 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 le projet et l'exécuter.

J'ai créé un projet Scala dans Intellij Idea 9.0.2 final (publié aujourd'hui). J'ai installé le plugin Scala, redémarré l'IDE et créé un nouveau projet Scala (avec le nom "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". J'ai défini comme classe principale Test et choisi le nom du projet ("TestScala") dans la combo box "Use classpath and JDK of module". Lorsque j'exécute la configuration, j'obtiens la même erreur que vous avez signalée ("Scalac internal error : class java.lang.ClassNotFoundException") .

Maintenant vient la partie bizarre :). Je fais un clic droit sur le projet, choisis "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 the final release (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.

UPDATE :

Pour vérifier le paramétrage du module, il faut cliquer sur l'icône de l'appareil. Module->Scala y Facettes->Scala (développer et cliquer sur Scala(ProjectName)) . Ces deux paramètres concernent le compilateur scala et l'emplacement de la bibliothèque scala. Je suppose 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 touche et enregistre les paramètres.

10voto

Graham Lea Points 1337

Pour répondre à votre question, il est difficile d'obtenir un IDE fonctionnel pour Scala pour deux raisons : (a) Scala commence tout juste à toucher un large public et (b) en raison de (a), il n'y a pas d'intérêt commercial à consacrer du temps à un IDE Scala.

De plus, si vous êtes assez vieux pour vous projeter dans le passé et assez jeune pour vous en souvenir, vous savez que pendant les cinq premières années de Java, voire plus, nous étions coincés avec des outils passables comme JBuilder qui ne faisaient guère plus que compiler votre code quand vous le disiez - pas de mise en évidence des erreurs, pas d'importation automatique, et le mot "refactoring" n'existait même pas. Si vous voulez faire œuvre de pionnier, vous devez être prêt à couper une partie de la route vous-même, ou au moins à faire de la propagande.

Je sais que cela ne vous aidera pas, mais j'ai utilisé avec succès IDEA pour Scala sur Linux, Mac et Windows. En général, j'ai installé le SDK Scala quelque part en local et je dirige IDEA vers celui-ci plutôt que d'utiliser l'option de téléchargement.

Actuellement, j'utilise principalement un Version EAP d'IDEA 9 sur Mac OS X avec Scala 2.8.0.Beta1-RC5 et cela fonctionne bien (sauf que fsc ne semble pas fonctionner avec des sources mixtes).

Vous pouvez tenter votre chance sur le site Forum de discussion sur le plugin IDEA Scala mais je n'ai pas eu beaucoup de réponses à mes propres messages.

6voto

Randall Schulz Points 18820

L'installation du plug-in est la première 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 la bibliothèque Scala y fichiers JAR du compilateur (au minimum, il s'agit de scala-compiler.jar y scala-library.jar ). L'ajout de JARs sources et d'un JAR ou d'URL de documentation est également une bonne idée. Ensuite, faites de cette bibliothèque une dépendance de tous les modules de votre projet qui incluent du code Scala.

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

2voto

Graham Lea Points 1337

Je viens de faire une nouvelle installation et j'ai eu exactement le même problème. Il s'est avéré que, parce que j'avais créé le fichier dans le paquet Root, IDEA avait ajouté une déclaration de paquet en haut de la page en nommant un paquet. Je suppose que cela a ensuite été compilé comme "package object Main" - syntaxe valide en 2.8 ? Quoi qu'il en soit, j'ai supprimé la ligne qui disait "package" et tout a fonctionné correctement.

1voto

Theq Points 19

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X