2009-07-16 33 views
4

我剛剛玩過Scala,並按照http://www.scala-lang.org/node/94所述安裝了Eclipse插件,但是在進入「Hello World」測試示例並設置了運行結構如所描述的,我得到以下錯誤java.lang.NoSuchMethodError:使用Eclipse Scala插件啓動HelloWorld時的主要問題

Exception in thread "main" java.lang.NoSuchMethodError: main 

作爲參考的代碼是

package hello 

object HelloWorld extends Application { 
    println("Hello World!") 
} 

我修修補補具有明顯的解決方案的位(添加主要方法,添加具有一個單獨的對象一個主要方法),但我很清楚arly做錯了什麼。

任何人都可以得到他們的測試示例工作,或指出我做錯了什麼?

回答

1

Scala插件有點不穩定。嘗試關閉並重新打開該項目,這通常有幫助。

+1

項目 - >清潔也應該做的伎倆,無需重新啓動。 – 2009-07-16 12:29:14

1

不幸的是,你沒有做錯任何事。 Scala的Eclipse插件已經看到了更好的日子,但它已被重寫,以利用一些最近的功能,使更好的集成,目前的版本是越野車。

現在,我推薦NetBeans。或者IDEA,如果你有錢的話。

+0

如果您不想花錢購買您正在試驗的產品,您可以隨時使用IDEA EAP。 – 2009-07-20 15:53:40

1

Netbeans工作〜確定,但也有問題。現在我有一個良好的Eclipse 3.4 + Scala插件2.7.5最後的工作很好。我建議你乾淨安裝Eclipse 3.4,Scala 2.7.5,清理項目等。 您是否使用Scala項目創建者創建項目?即創建新項目 - > Scala項目? 當然,如果沒有其他的東西在爲你工作的話。

2

我通過清理項目解決了問題,然後使用主要方法轉到類,並使用strg + s(自動構建)構建它。奇蹟般有效。

+0

只是爲了指出我在Netbeans的編譯保存功能on.turning關閉(項目 - >屬性 - >編譯)和手動編譯工作有同樣的麻煩。 – 2010-09-21 15:43:38

2

這是一個有點難看,但你可以把

package hello 

object HelloWorld { 
    def main(args:Array[String]) { 
    println("Hello World!") 
    } 
} 

文件HelloWordSrc.scala內(或任何你喜歡的,而不是尾隨「源」的),也許清理項目一次,然後Eclipse應該運行它。在「擴展應用」也從來沒有爲我在Eclipse中工作,但該插件會查找代碼,由於某種原因不能有相同的名稱,通過該文件的名稱

歡呼

2

已經指定了內部的主要方法完全一樣的問題。對我來說,解決辦法是這樣的:

  • 轉到運行 - >運行配置
  • 創建新JavaApplication配置,其中手動指定完整的類名(如hello.HelloWorld)
  • 應用和運行

應該是這樣。

編輯

至於問題的原因,恕我直言Eclipse是尋找文件HelloWorld.class的執行。但是,它應該尋找的是HelloWorld $。類(或其他方式)。但是這個假設可能是錯誤的...

4

昨晚我碰到同樣的問題。我通過a)刪除了任何現有的Scala運行配置,然後(我不是在開玩笑)在第一個大括號之前添加換行符。

我做的另一件事情是工作是進入現有的運行配置,並添加一些垃圾到「參數」選項卡。我反正忽略的參數,所以它並沒有影響到程序的輸出,但它得到了插件找到主再次

+0

在第一個大括號之前添加換行符。拯救我的日子! – 2011-08-07 07:33:11

4

我也打這個錯誤與下面的代碼:

package hello 

class HelloWorld extends Application { 
    Console.println("Hello World!") 
} 

錯誤是使用class而不是object,當我切換到object它在Eclipse中運行良好。

+0

就是這樣,非常感謝布倫特! – 2013-03-12 19:37:33

+0

我很高興我可以爲你節省一些痛苦。 – 2013-03-26 05:15:48

2

我得到了同樣的問題。下面是我如何修復它:右鍵單擊你的項目,選擇「properties-> Java Build Path」,你可以看到「Default output folder」爲「你的項目/ bin」。將其更改爲「您的項目/ 」,然後清理並重建您的項目。一些抱怨仍然可能出現,但它會通過 - 只是確保編譯的「.class」文件生成在「classes」文件夾下

我懷疑它與底層Java的執行引擎/配置有關。不太確定,因爲我不熟悉Java。

-3

簡單的答案:(2.9 *) 如果使用(NetBeans的OR ECLIPS)剛剛重新啓動程序 其他 移動類到其他類它可能有助於

0

如果您使用最新的Scala的版本,你應該使用

object HelloWorld extends App { 
    println("Hello World!") 
} 

應用程序,而不是應用程序。應用程序是2.8或2.7的方式。這是唯一的問題是另一個問題。