簡體   English   中英

使用Scala Plugin for Eclipse的noClassDefFoundError

[英]noClassDefFoundError using Scala Plugin for Eclipse

我使用Scala插件在Eclipse中成功實現並運行了幾個Scala教程。 然后突然我嘗試編譯並運行一個示例,並出現此錯誤:

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")
 }
}

如果您在嘗試作為Scala應用程序運行時看到這一點,那么最可能的解釋是您的項目沒有編譯並且沒有生成類文件。 請檢查是否是這種情況:在項目的輸出文件夾中查找hello / HelloWorld.class。

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

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

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

解決方案2 :創建一個新對象並將所有代碼剪切/粘貼到該文件中

當運行“clean”並沒有解開Eclipse時,我接下來嘗試保存我的工作,退出Eclipse並重新啟動。 這通常會讓事情再次發生,但並非總是如此。 有幾次我不得不用更新版本更新Scala插件(我每晚使用最新版本),讓事情再次發揮作用。 我懷疑這是否有效,因為新的插件碰巧修復了這個bug,而是期望加載新的插件會讓整個Eclipse-Scala系統“完全重置”,從而使它不受限制。

我在一個組合了.java和.scala文件的項目中遇到了這個問題。 我的解決方案是:

  1. 刪除所有.java文件
  2. 根據需要編輯scala代碼,以便在沒有它們的情況下進行編譯。
  3. 重新添加.java文件。
  4. 編輯scala代碼。

這里給出的其他解決方案對我不起作用。 我嘗試過:清理項目,重啟Eclipse,關閉 - 打開項目,創建一個新的.scala文件。 沒有快樂。

我在Ubuntu Linux 11.10上使用Eclipse 3.7(最新穩定版),Scala IDE 2.0.0和Scala 2.9。

我的症狀是:

  • 我的項目正在運行,但之后它沒有明顯的原因停止編譯。 IDE沒有顯示.scala文件的任何編譯錯誤,但輸出目錄中沒有.class文件,如果我嘗試運行任何東西,我得到NoClassDefError。
  • 如果我在.scala文件中創建了故意錯誤,那么它確實會被視為編譯錯誤。
  • 由於缺少scala類,.java文件正在注冊錯誤。

我想在.java / .scala mix的IDE插件中可能存在一個引導陷阱錯誤。 我已經完成了這個設置的混合項目沒有問題,所以它只在某些情況下觸發。 我不知道觸發器是什么,但一旦觸發,就沒有好的解決方案。

我也遇到了這個錯誤,但在完成這里的建議(清理,刪除運行配置等)后,我意識到我錯誤地設置了工作區,這就是找不到類的原因。

當您嘗試編譯java項目時出現相同的錯誤,這表明這是一個問題。

當我創建一個名為“common”的新包對象時,我遇到了這個錯誤(編譯在sbt中工作但在eclipse中失敗)。 在eclipse中刪除包對象導致編譯錯誤消失。 里面什么都沒有。

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

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

sbt匯編並運行良好; 日食不會

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

Scala 2.8.3插件; 沒有編譯錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM