2010-12-15 10 views
18

Probablemente estoy haciendo algo estúpido, pero no puedo detectarlo.Mezcla de archivos Scala y Java en un proyecto de Eclipse

He instalado Eclipse Helios (Helios porque no podía conseguir el apoyo Glassfish para trabajar correctamente con Galileo) y la acumulación de todas las noches del plugin Eclipse para Scala Helios

He creado un proyecto Scala y añadí algunos archivos: una mezcla de Java y Scala.

Todos parecen correctos desde el punto de vista sintáctico: el editor Eclipse al menos parece saber qué idioma es cada archivo e informa correctamente sobre errores de sintaxis cuando los hago, pero los archivos Java no pueden encontrar las clases creadas en Scala. El sitio IDE parece sugerir que todo debería funcionar.

No hay archivos de clase en el directorio bin para ninguno de los archivos Scala (hay archivos de clase para cada una de las clases definidas por los archivos Java) así que parece que por alguna razón los archivos Scala no se están construyendo . Estos archivos de clase faltantes explicarían por qué los archivos Java no ven las clases.

¿Qué me he perdido? ¿Cómo le digo a Eclipse que cree esos archivos?

+0

Por si acaso, verifique los constructores en las ventanas de propiedades del proyecto y asegúrese de que Scala esté marcado. – pedrofurla

+0

Otra conjetura descabellada, utilice diferentes carpetas de origen. Uno para Scala y otro para Java, nunca tuvieron problemas para hacer eso. – pedrofurla

+0

Gracias. Comprueba que se haya seleccionado el creador de Scala y movió los archivos Java a una carpeta diferente. No ayudó :( –

Respuesta

8

También estoy usando Helios (porque he usado 64 bits) y encontré el plugin comportándose un poco extraño a veces (aunque para ser honesto no es muy diferente que en Galileo). Al mezclar Java y Scala, como descubriste, parecería que no hay problema, pero no habría código compilado. O peor, una clase Java dependiente de una clase Scala no se compilaría porque la clase Scala no se compiló, pero no se compilaría hasta que todos los errores desaparecieran del proyecto, lo que por supuesto no sucedería hasta que compile ... ug.

Comencé a retocar los archivos classpath y project, y eventualmente lo hice funcionar, aunque no puedo decir por qué. Juro que cambié un archivo, luego lo cambié de nuevo, y luego funcionó?

De todos modos, aquí están mis archivos:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>xxxxxxxxxxxxx</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
    <buildCommand> 
     <name>org.scala-ide.sdt.core.scalabuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
</buildSpec> 
<natures> 
    <nature>org.eclipse.jdt.core.javanature</nature> 
    <nature>org.scala-ide.sdt.core.scalanature</nature> 
</natures> 
</projectDescription> 

y

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
<classpathentry kind="src" path="src"/> 
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/> 
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> 
<classpathentry kind="output" path="bin"/> 
</classpath> 

Lo fundamental parece ser que venga antes SCALA_CONTAINER JRE_CONTAINER, pero ... yo no apostaría por ello sea . El orden de las "naturalezas" también puede ser importante.

Se ha estado trabajando para mí ahora por una semana o dos, con actualizaciones diarias, así que ... * * dedos cruzados-

+0

Ok, lo intenté. El .project era idéntico, el .lasspath era bastante diferente, así que cambié el .classpath por el que dices arriba y ... no hay diferencia. He borrado el proyecto, reimportado los archivos, etc., pero no funciona :( –

+0

Mi error es que las naturalezas estaban en el otro orden. Desafortunadamente cambiar eso todavía no ha hecho nada. Todavía no está construyendo ningún tipo de clase. –

+0

No puedo pensar de todo lo que hice en todo el espacio de trabajo. No parece aplicable en .settings ... oh, estoy usando Java 1.5 en este proyecto, si eso es importante (1.5.0_22 en particular). Eclipse se está ejecutando en 1.6. –

7

me he dado cuenta de que Eclipse-IDE a veces no se puede compilar mis archivos cuando Scala Creo un nuevo archivo Debo seleccionar el proyecto en Package Explorer y actualizarlo (F5). Además, se puede cambiar el orden de compilación (Java primera vs Scala primero) en Eclipse a través de:

Ventana-> Preferencias-> Scala-> Compiler-> Construir Manager-> compileorder

+1

Hola Steve, estoy usando m2e, ¿sabes cómo cambiar el orden de compilación en el pom ?, solo puedo ver la opción scala-compile-first http://davidb.github.io/scala- maven-plugin/example_java.html – ZiglioUK

Cuestiones relacionadas