2010-03-29 69 views
18

我使用Scala插件在Eclipse中成功實現並運行了幾個Scala教程。然後,突然我試圖編譯和運行一個例子,這個錯誤想出了:使用Scala Plugin for Eclipse的noClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: hello/HelloWorld 
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

這一點上,我不能再在Eclipse中運行任何Scala程序後。我嘗試清理並重建我的項目,關閉並重新打開我的項目,然後關閉並重新打開Eclipse。

Eclipse版本號3.5.2和Scala插件2.8.0

這裏是原代碼:

package hello 

object HelloWorld { 
def main(args: Array[String]){ 
    println("hello world") 
} 
} 
+0

$ PROJECT/bin/hello裏面有HelloWorld.class文件嗎? (您可以使用「Navigator」視圖來檢查)。 – 2010-03-29 06:28:48

回答

10

如果你看到這個當您試圖爲Scala的應用程序運行,則最有可能解釋是你的項目沒有編譯,也沒有生成類文件。請檢查是否是這種情況:查看項目的輸出文件夾中的hello/HelloWorld.class。

如果你的項目沒有編譯,可能是因爲你錯過了一個錯誤(如果這個錯誤沒有在Problems視圖中報告,可能是一個錯誤,在這種情況下,請打開一個Trac上的門票),還是因爲您關閉了自動構建,而沒有完成項目的手動構建。

+0

輸出文件夾中沒有文件。不幸的是我昨天重新安裝了我的環境,以使所有的工作都能正常工作,所以我無法進一步排除故障 – 2010-03-30 17:21:39

+0

對我來說,似乎運行配置被破壞或沒有被正確設置,但我發現了一個「解決方案」 - 見下面 – 2011-06-05 21:59:10

+1

我有同樣的問題:HelloWorld $ .class在輸出文件夾中,但沒有HelloWorld。類。清潔解決了問題。 – thSoft 2011-08-26 00:29:06

2

當運行「乾淨」不會解開Eclipse,我下次嘗試保存我的工作,退出Eclipse並重新啓動。這通常會讓事情再次發生,但並非總是如此。有幾次我不得不使用更新的版本更新Scala插件(我正在使用最新的每晚),以使事情重新開始。我懷疑這是否有效,因爲新的插件恰巧修復了這個錯誤,但是希望加載新的插件給整個Eclipse-Scala 系統一個「完全重置」,使它不被感知。

3

我有同樣的問題。項目不編譯,但沒有錯誤突出顯示,並AFAIK代碼是確定的。這似乎是運行配置的問題。

解決方案1 ​​:刪除現有的運行配置爲你的對象,並創建一個新的

解決方案2:創建一個新的對象,並切斷所有代碼/粘貼到文件

0

我已將我的唯一一個類/對象/應用程序移至一個包,但未添加package聲明。

sbt編譯並運行良好; eclipse不會

在文件頂部添加package聲明修復了它。

Scala 2.8.3 plugin;沒有編譯錯誤

1

我在一個合併了.java & .scala文件的項目中遇到了這個問題。 對我來說,解決辦法是:

  1. 刪除所有.java文件
  2. 根據需要編輯所以它編譯沒有他們的Scala代碼。
  3. 添加.java文件回。
  4. 編輯Scala代碼回來。

這裏給我沒有工作的其他解決方案。我試過:clean項目,重啓Eclipse,關閉 - 打開項目,創建一個新的.scala文件。沒有快樂。

我使用Eclipse 3.7(最新的穩定),斯卡拉IDE 2.0.0和Scala 2.9在Ubuntu Linux 11.10。

在我的案件的症狀是:

  • 我的項目工作,但隨後停止編制沒有明顯的原因。 IDE沒有爲.scala文件顯示任何編譯錯誤,但輸出目錄中沒有.class文件。&如果我試圖運行任何東西,我得到一個NoClassDefError。
  • 如果我在.scala文件中創建了故意的錯誤,那確實會被編譯爲一個編譯錯誤。
  • 由於缺少scala類,.java文件正在註冊錯誤。

我想在IDE插件的某個地方可能會有一個boot-strapping錯誤,用於.java/.scala混合。我已經完成了這個設置的混合項目沒有問題,所以它只在某些情況下觸發。我不知道觸發器是什麼,但一旦觸發,就沒有好的解決方案。

0

我遇到了這個錯誤太多,但在這裏做的建議後(清除,刪除運行配置等),我意識到,我設置工作區錯誤,這就是爲什麼沒有被發現的類。

的指示時,當您試圖編譯Java項目出現同樣的錯誤,這是一個問題。

0

我遇到這個錯誤(編譯中SBT工作,但在Eclipse中失敗),當我創建了一個名爲「普通」的新包裝對象。在eclipse中刪除包對象導致編譯錯誤消失。裏面什麼都沒有。

我正在使用sbt-eclipse來構建eclipse項目。我正在使用scala eclipse 3.0.0-vfinal-20130326-1146-Typesafe。

相關問題