Mélange de fichiers Scala et Java dans un projet Eclipse


Je fais probablement quelque chose de stupide, mais je ne peux pas le repérer.

J'ai installé Eclipse Helios (Helios parce que je n'ai pas pu obtenir le support Glassfish pour fonctionner correctement en utilisant Gallileo) et la construction nocturne du plugin Scala Eclipse pour Helios

J'ai créé un projet Scala et ajouté quelques fichiers - un mélange de Java et Scala.

Ils semblent tous syntaxiquement corrects - l'éditeur Eclipse semble au moins savoir quelle langue est chaque fichier et signale correctement les erreurs de syntaxe quand je les fais-mais les fichiers Java ne peuvent pas trouver les classes créées dans Scala. Le site ID semble suggérer que tout cela devrait fonctionner.

Il n'y a pas de fichiers de classe dans le répertoire bin pour aucun des fichiers Scala (il y a des fichiers de classe pour chacune des classes définies par les fichiers Java), il semble donc que, pour une raison quelconque, les fichiers Scala ne soient pas construits. Ces fichiers de classe manquants expliqueraient pourquoi les fichiers Java ne voient pas les classes.

Qu'ai-je manqué? Comment dire à Eclipse de construire ces fichiers?

Author: The Archetypal Paul, 2010-12-15

2 answers

J'utilise également Helios (parce que je suis passé en 64 bits) et j'ai trouvé que le plugin se comportait parfois un peu bizarre (bien que pour être honnête, pas très différent de Galileo). Lorsque vous mélangez Java et Scala, comme vous l'avez trouvé, il semblerait qu'il n'y ait pas de problème, mais il n'y aurait pas de code compilé. Ou pire, une classe Java dépendante d'une classe Scala ne compilerait pas parce que la classe Scala n'a pas été compilée -- mais elle ne compilerait pas tant que toutes les erreurs n'auraient pas disparu du projet, ce qui bien sûr ne se produirait pas jusqu'à ce qu'il compile... ug.

J'ai commencé à bricoler avec les fichiers classpath et project, et finalement je l'ai fait fonctionner, bien que je ne puisse pas vraiment dire pourquoi. Je jure que j'ai changé un fichier, puis l'ai changé en arrière, et puis ça a fonctionné??

Quoi qu'il en soit, voici mes fichiers:

<?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>

Et

<?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>

La chose critique semble être que SCALA_CONTAINER vient avant JRE_CONTAINER, mais... Je ne parie pas sur qu'il soit. L'ordre des "natures" peut aussi être important.

Ça marche pour moi maintenant pour une semaine ou deux, avec des mises à jour quotidiennes, donc... * les doigts croisés *

 8
Author: Rodney Gitzel, 2010-12-15 18:18:00

J'ai remarqué qu'Eclipse-ID ne compile parfois pas mes fichiers Scala lorsque je crée un nouveau fichier. Je dois sélectionner le projet dans l'Explorateur de paquets et le rafraîchir (F5). En outre, vous pouvez modifier l'ordre de compilation (Java en premier vs Scala en premier) dans Eclipse en allant à:

Fenêtre - > Préférences - > Scala - > Compilateur - > Gestionnaire de construction - > compileorder

 7
Author: stephen.hanson, 2012-04-12 20:10:49