2010-12-15 92 views
18

我可能在做一些愚蠢的事情,但我無法發現它。在Eclipse項目中混合使用Scala和Java文件

我已經安裝了Eclipse赫利俄斯(太陽神,因爲我不能讓Glassfish的支持,使用伽利略正常工作)和Scala Eclipse插件赫利奧斯

每晚構建我創建了一個項目的Scala並添加一些文件 - Java和Scala的混合。

它們在語法上似乎都是正確的 - Eclipse編輯器至少似乎知道每個文件是什麼語言,並且在創建語法錯誤時正確報告語法錯誤 - 但Java文件找不到在Scala中創建的類。 IDE網站似乎暗示這應該都是正常工作。

在任何Scala文件的bin目錄中都沒有類文件(這些類文件是由Java文件定義的每個類的類文件),所以似乎由於某種原因Scala文件沒有被構建。這些缺少的類文件將解釋爲什麼Java文件看不到這些類。

我錯過了什麼?我如何告訴Eclipse來構建這些文件?

+0

,檢查項目屬性窗口中的構建器並確保Scala已被選中。 – pedrofurla 2010-12-15 11:58:47

+0

另一個瘋狂的猜測,使用不同的源文件夾。一個用於Scala,另一個用於Java,從來沒有像這樣的問題。 – pedrofurla 2010-12-15 12:00:02

+0

謝謝。檢查是否選擇了Scala構建器並將Java文件移至其他文件夾。沒有幫助:( – 2010-12-15 12:16:45

回答

8

我也使用Helios(因爲我已經走了64位),發現這個插件有時候有點奇怪(儘管說實話和Galileo沒什麼區別)。當你混合使用Java和Scala時,你會發現它看起來沒有問題,但是沒有編譯代碼。或者更糟糕的是,依賴Scala類的Java類不會編譯,因爲Scala類沒有編譯 - 但只有在所有錯誤都從項目中消失之後才能編譯,這當然不會發生,直到編譯完成...呃。

我開始修補類路徑和項目文件,並最終得到它的工作,但我不明白爲什麼。我發誓我改變了一個文件,然後改回來,然後它工作?

總之,這裏是我的文件:

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

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

關鍵的事情似乎是SCALA_CONTAINER JRE_CONTAINER之前來了,但是......我不會,要麼賭。 「自然」的順序也可能很重要。

它已經爲我工作現在一兩個星期,每天進行更新,所以... *五指交叉*

+0

好的,試過了。 .project是相同的,.lasspath完全不同,所以我將.classpath更改爲上面給出的那個,並且沒有區別。我已經刪除了項目,重新導入了文件等,但它不工作:( – 2010-12-15 20:44:30

+0

我錯誤的性質是在另一個順序。不幸的是改變,但仍沒有做任何事情。它仍然沒有建立任何類別fie – 2010-12-15 21:19:58

+0

我想不出我在這個項目中使用了Java 1.5,如果這很重要的話(特別是1.5.0_22),Eclipse本身運行在1.6中。 – 2010-12-15 21:46:37

7

我發現Eclipse的IDE有時不能編譯我的斯卡拉文件時我創建了一個新文件。我必須在包資源管理器中選擇項目並刷新它(F5)。此外,您還可以通過將改變編譯順序(Java的第一個主場迎戰斯卡拉第一)在Eclipse:萬一

窗口 - >首選項 - > Scala->反編譯>構建管理器 - > compileorder

+1

您好Steve,我正在使用m2e,您是否知道如何更改pom中的編譯順序,我只能看到scala-compile-first選項http://davidb.github.io/scala-行家-插件/ example_java.html – ZiglioUK 2013-07-19 02:39:00

相關問題