2010-04-19 11 views
47

Hace poco dejé de intentar usar Scala en Eclipse (cosas básicas como la finalización no funciona). Así que ahora estoy intentando IntelliJ. No estoy llegando muy lejos.Cómo usar Scala en IntelliJ IDEA (o: ¿por qué es tan difícil obtener un IDE funcional para Scala)?

He podido editar programas (con resaltado de sintaxis y finalización ... ¡yay!). Pero no puedo ejecutar incluso el "Hola mundo" más simple. Este fue el error original:

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

Pero eso fue ayer con IDEA 9.0.1. Ver abajo ...

ACTUALIZACIÓN

Hoy he desinstalado IntelliJ 9.0.1, 9.0.2 e instalado disponibilidad temprana, con el 4/14 versión estable de la Scala plug-in.

Entonces configuración de un proyecto desde cero a través de los magos:

  • nuevo proyecto desde cero
  • JDK es 1.6.u20
  • aceptar el valor predeterminado (proyecto) en lugar de mundial/módulo
  • aceptar la descarga de Scala 2.8.0beta1 en la carpeta lib del proyecto

Creó una nueva clase:

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

Para mis esfuerzos, ahora tengo un error de nuevo :)

Aquí está:

error interno scalac: java.lang.ClassNotFoundException clase [java.net.URLClassLoader $ 1 .run (URLClassLoader.java:202), java.security.AccessController.doPrivileged (método 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 (Native Method), java.lang. Class.forName (Class.java:169), org.jetbrains .plugins.scala.compiler.rt.ScalacRunner.main (ScalacRunner.java:72)]

INFORME FINAL DE ACTUALIZACIÓN

He desinstalado y reinstalado EA 9.0.2 9.0.1, pero esta vez fui con la 2.7.3 versión de Scala en lugar de la versión 2.7.6 predeterminada, porque 2.7.3 es la que se muestra en las capturas de pantalla en el sitio web de IntelliJ (¡supongo que las capturas de pantalla prueban que realmente probaron esta versión!). ¡Ahora todo funciona!

+1

Ha añadido compilador Scala y frascos de biblioteca a las dependencias del proyecto? – ziggystar

+0

Tuve un problema similar, pero en mi caso fue por una declaración de paquete en la parte superior del archivo –

+1

Hoy en día todo ha cambiado, tanto Idea como Scala. Idea tiene la integración SBT ahora. Todas las respuestas son irrelevantes ahora, y todo esto es más fácil ahora. –

Respuesta

20

He encontrado el mismo error de scalac cuando intento ejecutar un proyecto de Scala en Intellij Idea 9.0.2 y he logrado encontrar una solución por casualidad :). Estos son los pasos que tomé al crear el proyecto y ejecutarlo.

He creado un proyecto de Scala en Intellij Idea 9.0.2 final (fue lanzado hoy). Instalé el complemento de Scala, reinicié el IDE y creé un nuevo proyecto de Scala (con el nombre "TestScala") con scala-2.8.0.Beta1 como biblioteca de proyectos. Una vez creado el proyecto y las bibliotecas Scala descargado, he creado un archivo Test.scala con el siguiente contenido:

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

Después de eso, he creado una configuración de lanzamiento ("Editar Configuraciones"), la elección de la "Solicitud " modelo. Establecí como prueba de la clase principal y elijo el nombre del proyecto ("TestScala") en el cuadro combinado "Utilizar classpath y JDK del módulo". Cuando ejecuto la configuración, obtengo el mismo error que informaste ("Error interno de Scalac: clase java.lang.ClassNotFoundException").

Ahora viene la parte extraña :). Hago clic con el botón derecho en el proyecto, selecciono "Configuración del módulo", eche un vistazo a todas las configuraciones, pero No cambio nada. Haga clic en "aplicar" y "ok", intente ejecutar nuevamente la configuración y funciona :).

Uso Intellij Idea 9.0.2 la versión final (compilación 95-66); Ubuntu 9.10 y JDK 1.6.0_18. También debo mencionar que tenía un JDK configurado en Intellij, de lo contrario hay un paso adicional para configurarlo.

ACTUALIZACIÓN:

Para controlar si el del módulo, es necesario hacer clic en el módulo-> Scala y Facets-> Scala (expandirla y haga clic sobre el Scala (Nombre del Proyecto)) . Ambas configuraciones son sobre el compilador scala y la ubicación de la biblioteca scala. Supongo que estos valores no se configuran correctamente cuando se crea el proyecto, sino que se guardan una vez que el usuario los toca y guarda la configuración.

+0

¡Gracias! Esto es consistente con lo que observé, ¡pero no fue inmediatamente obvio hasta que vi su respuesta! –

+1

¡OMG! Muchas gracias por esta pista! Guardado mi mucho mucho problema! :) – Malax

+1

Genius. Gracias, y culpo a los desarrolladores de IntelliJ en la próxima ocasión posible. –

0

Está mezclando código compilado con dos versiones diferentes de Scala.

+0

Eso es imposible ... ¡es solo un programa de "hello world" de 3 líneas! –

+3

¡Eso es un non-sequitur! –

+0

no, realmente ... 3 líneas de código no pueden haber sido "compiladas con dos versiones diferentes de Scala". Existe la posibilidad de que IntelliJ encuentre archivos de experimentos anteriores; así que voy a intentar una desinstalación/reinstalación completa ahora. –

10

Para responder a su pregunta, es difícil conseguir un IDE trabaja para Scala por dos razones: (a) Scala sólo se está empezando a llegar a un público amplio y (b) debido a (a), no hay caso de negocios para pasar tiempo en un Scala IDE.

Además, si eres lo suficientemente mayor como para evocar tu mente y eres lo suficientemente joven como para recordarlo, sabrías que durante los primeros cinco o más años de Java, nos quedamos con herramientas muy prácticas como JBuilder que hicieron poco más que compilar tu código cuando lo dijiste, sin resaltar el error, sin importar automáticamente, y la palabra refactorización ni siquiera existía. Si quiere ser pionero, debe estar preparado para cortar parte de la carretera usted mismo, o al menos arbusto.

Sé que no lo ayudará, pero he utilizado con éxito IDEA para Scala en Linux, Mac y Windows. Normalmente tengo instalado el SDK de Scala en algún lugar local y apunto IDEA en lugar de utilizar la opción 'descargar'.

Actualmente, estoy usando principalmente un EAP version of IDEA 9 en Mac OS X con Scala 2.8.0.Beta1-RC5 y está funcionando bien (excepto que fsc no parece funcionar con fuentes mixtas).

Puedes probar suerte en el IDEA Scala Plugin Discussion Forum, aunque no he tenido muchas respuestas a mis publicaciones allí.

1

Ayer tuve el mismo problema al intentar configurarlo. La solución es bastante simple, solo tienes que establecer Scala en algún lugar de la configuración del proyecto.

+0

Fui a Configuración para agregar el complemento Scala. ¿Hay algo más que necesite hacer? Gracias –

+0

Lo único obvio que no está en el tutorial principal es agregar la biblioteca scala a la dependencia de tu módulo. Esto es en la configuración del Módulo -> pestaña de dependencias AFAIR. Funciona perfectamente incluso con 2.8 rc. – Theq

6

La instalación del plug-in es un requisito previo.

El siguiente que debe hacer es definir una biblioteca (global o específica del proyecto, yo uso global) que mantiene la biblioteca Scala y archivos JAR compilador (como mínimo, eso es scala-compiler.jar y scala-library.jar). También es una buena idea agregar JAR de origen y una JAR o URL de documentación. Luego haga que esta biblioteca sea una dependencia de cualquier módulo en su proyecto que incluya código Scala.

Por último, encuentre las facetas de Scala en esos módulos y anule la selección de ambas casillas allí.

2

Acabo de hacer una nueva instalación y tuve exactamente este mismo problema. Resultó que, debido a que había creado el archivo en el paquete raíz, IDEA había agregado una declaración de paquete en la parte superior con el nombre de un paquete. Supongo que esto se compiló como "paquete principal Main" - sintaxis válida en 2.8? De todos modos, eliminé la línea que decía dicho paquete y todo funcionó bien.

+0

** AHA **! Eso hizo el truco. – Charles

0

Recibí este error y también tuve que hacer clic derecho en el proyecto y "Abrir configuración del módulo". Sin embargo, fue más que golpear aplicar. Tenía que asegurarme de que mi raíz de contenido era correcta para cada proyecto. Por alguna razón, hubo algunas carpetas de origen y de prueba incorrectas.

Mi proyecto utiliza maven como herramienta de compilación principal e importar el proyecto a Intellij es probablemente lo que creó estas configuraciones incorrectas.

+0

Hm, en realidad quería sugerir construir proyectos IDEA a partir de archivos de compilación maven, ya que así es como creé con éxito más de 10 proyectos en los últimos 12 meses. –

0

tuve problema similar, siguiendo las instrucciones this Entrada de blog resuelto el problema para mí

Cuestiones relacionadas