2011-11-08 94 views
0

我有一個Java Maven項目,我安裝了Eclipse的Scala插件併爲我的項目添加了scala自然。現在,我寫了一些自定義Scala Actor和一些其他實用程序類。我在我的java代碼中使用這些scala類。而寫的代碼,它不會引發任何錯誤。但是,當我這樣做Maven的清潔/建造,它會引發編譯錯誤的像下面編譯錯誤在Java Maven項目中使用Scala類

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:赫利俄斯-3.5,斯卡拉 - 2.9.2其中自帶與插件

我想有一個自定義的編譯器配置這樣做?我還有一個其他的新手問題

你如何直接在java中啓動scala actor併發送消息給它?我只能看到act()方法。我想這樣做

actor { 

CustomActor ! Message 

} 

在Java

謝謝 sanre6

+1

你能告訴我們一些代碼嗎?很難推斷是什麼導致你的第一個問題。關於你的第二個問題,沒有簡單的方法來模擬Scala的'actor'方法,並因此自動啓動Java中的actor(因爲Java還不支持閉包)。 –

+0

其實它不是代碼問題,相同的代碼在普通的java項目中工作正常。但是。當我在使用maven編譯器插件的maven項目中使用這些類時,出現這些錯誤。謝謝你的解釋,但爲什麼演員不能直接在java中使用 – sanre6

回答

3

在第一部分,你添加的斯卡拉編譯步驟到Maven POM?你有沒有把maven-scala-plugin添加到你的pom中?

對於第二部分,正如Mirco所說,沒有簡單的方法來定義Java中的Actor。你必須在Scala中定義它,但是你可以啓動它並用Java發送消息給它。

只需在實例上調用start(),然後您應該能夠使用!傳遞消息給它!方法。這將在Java中提供,但它被稱爲$bang

+0

不,我沒有添加maven scala插件?所以,插件使用的java編譯器不能編譯scala類。 – sanre6

+0

正常的maven編譯器插件無法編譯scala類。你必須添加Maven Scala插件。 –

+0

maven-scala-plugin解決了我所有與混雜java/scala代碼有關的問題。現在,我可以用第一步運行我所有的maven目標,並使用maven-scala插件編譯scala類。感謝提示男人,你讓我的一天 – sanre6

2

轉到http://scala-tools.org/mvnsites/maven-scala-plugin/example_java.html並直接使用pom進行第一次測試。我跟了這事

  1. Scala的類「ScalaUtils」裏面src/main/scala
  2. 一個Java類中src/main/java它使用「ScalaUtils」

最重要的事情是要添加的斯卡拉編譯在在Java編譯之前的正確階段:

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

提到的鏈接已經死了。任何新的鏈接? –

+0

好的 - 找到scala-maven-plugin的相應鏈接,這就是我使用的:http://davidb.github。I /擴展Maven的插件/ example_java.html –

相關問題