2012-01-27 57 views
2

Eclipse Scala插件有時會給我僞造的編譯錯誤,說「所需的類文件缺失」。這可能與我的項目依賴於同一工作區中的其他項目有關。清理項目 - 即使清理所有打開的項目 - 也不能解決這些錯誤。我如何讓他們離開?Eclipse Scala IDE - 缺少X所需的類文件

回答

3

這可能是由於在類路徑中有兩個不同版本的同一個jar(或者,我想,在classpath中只有一箇舊的與二進制不兼容的jar版本)。您可以使用像JBoss Tattletale這樣的類路徑檢查工具來檢測這樣的問題。

下面是分析一個項目,所有的罐子都在lib子目錄爲例告密命令行:

java -Xmx512m -jar $HOME/opened/tattletale-1.1.2.Final/tattletale.jar $HOME/$PROJECT/lib $HOME/opened/tattletale-1.1.2.Final/reports/$PROJECT 

告密將創建報告目錄(最後一個參數),如果它不存在。 Maven和Ant項目也有Tattletale版本。

然後在Web瀏覽器中打開該文件

tattletale-1.1.2.Final/reports/$PROJECT/index.html 

,並環顧四周,尤其是在像「不同版本的消除Jar文件」和「多jar文件」頁面。如果沒有發現該類型的問題,那麼這些頁面將是空的。

+0

海事組織這是最有用的答案,至少它導致我的決心。我想你應該接受它。非常感謝。 – 2012-07-25 14:17:57

1

關閉所有打開的項目,然後打開出現這些錯誤的項目。這對我有用,但只在某些情況下。我很有可能需要事先清理項目。

1

斯卡拉編譯器看起來canonicalise路徑(或者它可能只是Play 1 Scala插件,我不知道)。因此,如果您在Linux或Mac OS X上創建了一個符號鏈接,從foo.jarfoo.jar.orig,Scala編譯器會認爲它不是.jar文件,因爲它將查看規範路徑。所以像這樣的任何jar都會從你的類路徑中悄悄丟棄。

1

您可能在classpath中不需要一些必需的符號,或者(!),在classpath中可能有多個jar版本,這是我的情況。

在將salat和casbah安裝到項目中之後,我在IntelliJ中進行完全重建時遇到了類似的問題。 SBT構建進展順利,而想法開始失敗。

我已經卸下卡斯巴,因爲它是由salat傳遞導入的,問題消失了。

希望能幫助那裏的人。