2010-04-19 9 views
47

Recentemente ho rinunciato a provare ad usare Scala in Eclipse (cose di base come il completamento non funziona). Quindi ora sto provando IntelliJ. Non sto andando molto lontano.Come utilizzare Scala in IntelliJ IDEA (o: perché è così difficile ottenere un IDE funzionante per Scala)?

Sono stato in grado di modificare i programmi (con l'evidenziazione della sintassi e il completamento ... yay!). Ma non sono in grado di eseguire nemmeno il più semplice "Hello World". Questo era l'errore originale:

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

Ma quello era ieri con IDEA 9.0.1. Vedi sotto ...

UPDATE

Oggi ho disinstallato IntelliJ 9.0.1, 9.0.2 e installato precoce disponibilità, con la versione 4/14 stabile della Scala plug-in.

Poi ho impostare un progetto da zero attraverso le procedure guidate:

  • nuovo progetto da zero
  • JDK è 1.6.u20
  • accettare l'impostazione predefinita (progetto) invece di globale/Modulo
  • accetta il download di Scala 2.8.0beta1 nella cartella lib del progetto

Creata una nuova classe:

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

Per quanto mi sforzi, ora ho un nuovo errore :)

Eccolo:

errore interno scalac: classe java.lang.ClassNotFoundException [java.net.URLClassLoader $ 1 .run (URLClassLoader.java:202), java.security.AccessController.doPrivileged (metodo nativo), 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 (Metodo nativo), java.lang. Class.forName (Class.java:169), org.jetbrains .plugins.scala.compiler.rt.ScalacRunner.main (ScalacRunner.java:72)]

aggiornamento finale

ho disinstallato e reinstallato 9.0.2 EA 9.0.1, ma questa volta sono andato con la 2.7.3 versione di Scala piuttosto che il 2.7.6 predefinito, perché 2.7.3 è quello mostrato nelle schermate del sito Web IntelliJ (suppongo che le schermate dimostrino che hanno effettivamente testato questa versione!). Ora tutto funziona !!!

+1

Hai aggiunto Scala del compilatore e biblioteca vasetti di proiettare le dipendenze? – ziggystar

+0

Aveva un problema simile, ma nel mio caso era a causa di una dichiarazione del pacchetto nella parte superiore del file –

+1

Al giorno d'oggi è cambiato tutto, sia Idea che Scala. L'idea ha ora l'integrazione SBT. Tutte le risposte sono irrilevanti ora e tutto questo è più facile ora. –

risposta

20

Ho riscontrato lo stesso errore di scalac durante il tentativo di eseguire un progetto Scala in Intellij Idea 9.0.2 e sono riuscito a trovare una soluzione per caso :). Questi sono i passaggi che ho seguito per creare il progetto e eseguirlo.

Ho creato un progetto Scala in Intellij Idea 9.0.2 final (è stato rilasciato oggi). Ho installato il plugin Scala, riavviato l'IDE e creato un nuovo progetto Scala (con il nome "TestScala") con scala-2.8.0.Beta1 come libreria di progetto. Una volta che il progetto viene creato e le librerie Scala scaricato, ho creato un file Test.scala con il seguente contenuto:

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

Dopo di che, ho creato una configurazione di lancio ("Modifica configurazioni"), scegliendo la "Applicazione " modello. Ho impostato come test della classe principale e scelto il nome del progetto ("TestScala") nella casella combinata "Usa classpath e JDK del modulo". Quando eseguo la configurazione ottengo lo stesso errore segnalato ("Errore interno Scalac: classe java.lang.ClassNotFoundException").

Ora arriva la parte strana :). Faccio clic con il pulsante destro del mouse sul progetto, seleziona "Impostazioni modulo", guardo tutte le impostazioni, ma Non cambio nulla. Fai clic su "applica" e "ok", prova a eseguire nuovamente la configurazione e funziona :).

Uso Intellij Idea 9.0.2 la versione finale (build 95-66); Ubuntu 9.10 e JDK 1.6.0_18. Devo anche dire che ho avuto un JDK configurato in Intellij, altrimenti c'è un ulteriore passaggio per configurarlo.

UPDATE:

Quando si controlla l'impostazione del modulo, si ha la necessità di fare clic sul su moduli> Scala e Facets-> Scala (espanderlo e fare clic su Scala (ProjectName)) . Entrambe queste impostazioni riguardano il compilatore di scala e la posizione della libreria di scala. Immagino che questi valori non siano impostati correttamente quando il progetto viene creato ma vengono salvati una volta che l'utente li ha toccati e salvato le impostazioni.

+0

Grazie! Questo è coerente con quello che ho osservato, ma non è stato immediatamente evidente fino a quando ho visto la tua risposta! –

+1

OMG! Grazie mille per questo suggerimento! Mi ha salvato un sacco di problemi! :) – Malax

+1

Genio. Grazie, e darò la colpa agli sviluppatori IntelliJ alla prossima occasione possibile. –

0

Si sta mescolando il codice compilato con due versioni diverse di Scala.

+0

Questo è impossibile ... è solo un programma "ciao mondo" a 3 linee! –

+3

Questo è un non-sequitur! –

+0

no, davvero ... 3 righe di codice non possono essere state "compilate con due diverse versioni di Scala". C'è una possibilità che IntelliJ stia trovando file da esperimenti precedenti; quindi ho intenzione di provare una disinstallazione completa/reinstallare ora. –

10

Per rispondere alla tua domanda, è difficile ottenere un IDE che lavora per Scala per due motivi: (a) Scala è appena cominciando a raggiungere un vasto pubblico e (b) a causa di (a), non v'è business case per passare del tempo su un IDE Scala.

Inoltre, se sei abbastanza grande da farti tornare indietro e abbastanza giovane da ricordare ancora, sapresti che per i primi cinque o più anni di Java, siamo rimasti bloccati con strumenti okay-ish come JBuilder che ha fatto ben poco più che compilare il codice quando lo hai detto tu - nessun errore di evidenziazione, nessuna importazione automatica, e il refactoring delle parole non esisteva nemmeno. Se vuoi essere un pioniere, devi essere pronto a tagliare un po 'della strada da te, o almeno a Bush-bash.

So che non ti sarà d'aiuto, ma ho utilizzato IDEA per Scala con successo su Linux, Mac e Windows. Di solito l'SDK Scala è installato da qualche parte localmente e punto IDEA anziché utilizzare l'opzione 'download'.

Attualmente, utilizzo principalmente uno EAP version of IDEA 9 su Mac OS X con Scala 2.8.0.Beta1-RC5 e funziona bene (tranne che fsc non sembra funzionare con origini miste).

Si potrebbe tentare la fortuna allo IDEA Scala Plugin Discussion Forum, anche se non ho avuto molte risposte ai miei post.

1

Ho avuto lo stesso problema ieri mentre provavo a configurarlo. La soluzione è piuttosto semplice, devi solo impostare scala da qualche parte nelle impostazioni del progetto.

+0

Ho fatto clic su Impostazioni per aggiungere il Plugin Scala. C'è qualcosa che ELSE devo fare? Grazie –

+0

L'unica cosa non ovvia che non è il tutorial principale è aggiungere la libreria di scala alla dipendenza del modulo. Questo è nell'impostazione del modulo -> scheda dipendec AFAIR. Funziona perfettamente anche con 2,8 rc. – Theq

6

L'installazione del plug-in è prerequisito.

La prossima cosa da fare è definire una libreria (globale o progetto specifico; io uso globale) che contiene la libreria Scala e file JAR compilatore (come minimo, che è scala-compiler.jar e scala-library.jar). Anche aggiungere JAR di origine e un JAR o URL di documentazione è una buona idea. Quindi rendi questa libreria una dipendenza di qualsiasi modulo nel tuo progetto che includa il codice Scala.

Infine, trova i facet Scala in quei moduli e deseleziona entrambe le caselle di controllo.

2

Ho appena eseguito una nuova installazione e ho avuto esattamente lo stesso problema. Si è scoperto che, poiché avevo creato il file nel pacchetto radice, IDEA aveva aggiunto un'istruzione di pacchetto in alto con la denominazione di un pacchetto. Suppongo che questo sia stato compilato come "oggetto pacchetto Main" - sintassi valida in 2.8? Ad ogni modo, ho cancellato la riga che diceva il pacchetto e tutto ha funzionato bene.

+0

** AHA **! Questo ha fatto il trucco. – Charles

0

Stavo ricevendo questo errore e ho dovuto anche fare clic con il tasto destro del mouse sul progetto e su "Apri Impostazioni modulo". Tuttavia, è stato più che colpire applicare. Dovevo assicurarmi che il mio Content Root fosse corretto per ogni progetto. Per qualche motivo, c'erano alcune cartelle di origine e test errate.

Il mio progetto utilizza Maven come strumento di compilazione principale e l'importazione del progetto in Intellij è probabilmente ciò che ha creato queste impostazioni errate.

+0

Hm, in realtà volevo suggerire di creare progetti IDEA dai file di costruzione di Maven, poiché è così che ho creato con successo più di 10 progetti negli ultimi 12 mesi. –

0

Ho avuto problemi simili, seguendo le istruzioni this post del blog ha risolto il problema per me

Problemi correlati