2011-11-08 2 views
0

J'ai un projet java maven, j'ai installé le plugin scala pour eclipse et ajouté la nature scala à mon projet. Maintenant, j'ai écrit des scala personnalisés et d'autres classes utilitaires. J'utilise ces classes scala dans mon code java. en écrivant le code, il ne jette aucune erreur .Mais, quand je fais maven clean/build, il jette son erreur de compilation comme ci-dessousErreur de compilation en utilisant les classes scala dans le projet java maven

11/8/11 10:45:23 AM : [ERROR] ............\Simple.java:[86,10] cannot find symbol 
symbol : variable ExecutorObject 
location: class com.ms.scala.Simple 
11/8/11 10:45:23 AM : [INFO] 2 errors 
11/8/11 10:45:23 AM : [INFO] ------------------------------------------------------------- 
11/8/11 10:45:23 AM : Build errors for Project; org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project : Compilation failure 

Eclipse IDE: helios -3,5, Scala - 2.9.2 qui vient avec le plugin

Je suppose qu'il existe une configuration de compilateur personnalisée pour cela? J'ai aussi une autre question de débutant

comment démarrer scala acteur directement dans java et lui envoyer un message? Tout ce que je peux voir, c'est la méthode act(). Je veux faire

actor { 

CustomActor ! Message 

} 

en java

merci sanre6

+1

Pouvez-vous nous montrer du code? Il est très difficile de déduire ce qui cause votre premier numéro. Concernant votre deuxième question, il n'y a pas de moyen simple d'émuler la méthode Scala 'actor', et donc de démarrer automatiquement un acteur en Java (parce que Java ne supporte pas encore les fermetures). –

+0

Eh bien, ce n'est pas le code qui est le problème, le même code fonctionne très bien dans un projet Java simple. Mais . Quand j'utilise ces classes dans un projet maven en utilisant le plugin maven compiler, j'obtiens ces erreurs. Merci pour l'explication si au sujet de pourquoi l'acteur ne peut pas être directement utilisé dans Java – sanre6

Répondre

3

Pour la première partie, vous avez ajouté l'étape de compilation scala à votre pom maven? Avez-vous ajouté le maven-scala-plugin à votre pom? Pour la deuxième partie, comme le dit Mirco, il n'y a pas de moyen simple de définir un acteur en Java. Vous devrez le définir dans Scala, mais vous pouvez le démarrer et lui envoyer des messages en Java.

Appelez simplement start() sur l'instance, puis vous devriez être en mesure de lui passer des messages en utilisant le! méthode. Ce sera disponible en Java, mais il est appelé $bang.

+0

non je n'ai pas ajouté le plugin maven scala? Ainsi, le compilateur java utilisé par le plugin ne peut pas compiler des classes scala. – sanre6

+0

Le plugin du compilateur maven normal ne peut pas compiler des classes scala. Vous devez ajouter le plugin maven scala. –

+0

maven-scala-plugin a résolu tous mes problèmes avec le mélange java/scala code. Maintenant, je suis capable d'exécuter tous mes objectifs maven avec la première étape comme classes de scala compliing en utilisant le maven-scala-plugin. merci pour l'homme indice, vous avez fait ma journée – sanre6

2

Passez à http://scala-tools.org/mvnsites/maven-scala-plugin/example_java.html et utilisez le pom directement pour un premier test. Je l'ai fait avec:

  1. Une classe Scala "ScalaUtils" à l'intérieur src/main/scala
  2. Une classe java dans src/main/java qui utilise "ScalaUtils"

L'important est d'ajouter la compilation scala à la bonne phase, avant que Java ne soit compilé:

<execution> 
    <phase>process-resources</phase> 
+0

Lien mentionné est mort. Un nouveau lien? –

+0

Ok - trouvé le lien correspondant pour scala-maven-plugin, qui est ce que j'utilise: http: //davidb.github.I/échelle maven-plugin/example_java.html –

Questions connexes