2010-03-29 17 views
18

Implementé y ejecuté con éxito varios tutoriales de Scala en Eclipse utilizando el complemento Scala. Entonces, de repente he tratado de compilar y ejecutar un ejemplo, y este error ocurrió:noClassDefFoundError con el complemento Scala para Eclipse

Exception in thread "main" java.lang.NoClassDefFoundError: hello/HelloWorld 
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

Después de este punto ya no podía ejecutar ningún programa Scala de Eclipse. Intenté limpiar y reconstruir mi proyecto, cerrando y volviendo a abrir mi proyecto, y cerrando y volviendo a abrir Eclipse.

versión de Eclipse número 3.5.2 y 2.8.0 plugin de Scala

Aquí está el código original:

package hello 

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

¿Hay un archivo HelloWorld.class dentro de $ PROJECT/bin/hello? (Puede usar la vista "Navegador" para verificar). –

Respuesta

10

Si ve esto cuando intenta ejecutar como una aplicación Scala entonces el más probable la explicación es que su proyecto no se compiló y no se generaron archivos de clase. Verifique si ese es el caso: busque en la carpeta de salida de su proyecto hello/HelloWorld.class.

Si su proyecto no compiló podría ser porque hay un error que se ha perdido (y si este error no se informa en la vista de Problemas que podría ser un error, en cuyo caso abra una ticket en Trac) o porque ha desactivado compilaciones automáticas y no ha realizado una compilación manual de su proyecto.

+0

No hubo archivos en la carpeta de salida. Lamentablemente ayer volví a instalar mi entorno para que todo funcione, por lo que no puedo solucionar más problemas. –

+0

Para mí, parecía que las Configuraciones de Ejecución de alguna manera se corrompían o no se configuraban correctamente, pero encontré una "solución" - ver abajo –

+1

Tuve el mismo problema: HelloWorld $ .class estaba en la carpeta de salida, pero no en HelloWorld. clase. La limpieza resolvió el problema. – thSoft

2

Cuando ejecutar "limpiar" no desconecta Eclipse, lo siguiente que intento es guardar mi trabajo, salir de Eclipse y reiniciar. Eso generalmente hace que las cosas vuelvan a funcionar, pero no siempre. Algunas veces tuve que actualizar el complemento de Scala con una versión más reciente (estoy usando la última versión nocturna) para que las cosas funcionen nuevamente. Dudo que esto funcionó porque el nuevo complemento solucionó el error, sino que esperaba que cargar el nuevo complemento le diera a todo el sistema Eclipse-Scala un "reinicio total" que lo deja sin memoria.

3

Tuve el mismo problema. El proyecto no se compila pero no hay errores resaltados y AFAIK el código está OK. Parece ser un problema con las configuraciones de ejecución.

Solución 1: borrar la configuración de ejecución existente para el objeto y crear uno nuevo

Solución 2: Crear un nuevo objeto y cortar/pegar todo el código en el archivo

0

I había movido mi única clase/objeto/aplicación a un paquete, pero no había agregado la declaración package.

sbt compilado y funcionado bien; eclipse no

Al agregar la declaración package en la parte superior del archivo, se arregló.

Scala 2.8.3 plugin; no hay error de compilación

1

Estaba obteniendo este problema en un proyecto que combinaba .java & .scala. La solución para mí fue:

  1. Elimine todos los archivos .java
  2. Editar el código Scala como sea necesario para que se compila sin ellos.
  3. Agregue los archivos .java nuevamente.
  4. Edite el código scala nuevamente.

Las otras soluciones dadas aquí no funcionaron para mí. Intenté: limpiar el proyecto, reiniciar Eclipse, cerrando: &, abrir el proyecto y crear un nuevo archivo .scala. Sin alegría.

Estoy usando Eclipse 3.7 (último estable), Scala IDE 2.0.0 y Scala 2.9 en Ubuntu Linux 11.10.

Los síntomas en mi caso fueron:

  • Mi proyecto era de trabajo, pero luego se detuvo la compilación sin razón aparente. El IDE no mostró ningún error de compilación para los archivos .scala, pero no había archivos .class en el directorio de salida & Obtuve un NoClassDefError si traté de ejecutar algo.
  • Si creé un error deliberado en un archivo .scala, eso fue recogido como un error de compilación.
  • Los archivos .java estaban registrando errores debido a las clases Scala que faltan.

Supongo que probablemente exista un error de arranque en alguna parte del complemento IDE para las mezclas .java/.scala. He hecho proyectos híbridos con esta configuración sin problemas, por lo que solo se desencadena en algunas situaciones. No sé cuál es el desencadenante, pero una vez activado, no hay una buena solución.

0

Me encontré este error también, pero después de hacer las sugerencias aquí (limpieza, eliminación de la configuración de ejecución, etc.), me di cuenta de que configuré el espacio de trabajo erróneamente por lo que no se encuentra la clase.

Una indicación de que esto es un problema es cuando ocurre el mismo error cuando intenta compilar un proyecto de Java.

0

Encontré este error (la compilación funcionó en sbt pero falló en eclipse) cuando creé un nuevo objeto de paquete llamado "común". Eliminar el objeto del paquete en eclipse provocó que el error de compilación desapareciera. No había nada en eso.

Estaba usando sbt-eclipse para construir el proyecto de eclipse. Estoy usando scala eclipse 3.0.0-vfinal-20130326-1146-Typesafe.

Cuestiones relacionadas