2009-07-16 8 views
4

Ich habe gerade mit Scala gespielt und das Eclipse Plugin wie unter http://www.scala-lang.org/node/94 beschrieben installiert, aber nachdem ich das "Hello World" Test Beispiel eingegeben und die laufen Konfiguration, wie sie beschrieben ist, bekomme ich folgende Fehlerjava.lang.NoSuchMethodError: main beim Starten von HelloWorld mit Eclipse Scala Plugin

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

als Referenz ist der Code

package hello 

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

ich ein wenig mit den offensichtlichen Lösungen gebastelt haben (das Hinzufügen eines Hauptverfahrens, das Hinzufügen eines Singleton-Objekt mit eine Hauptmethode), aber ich bin cle arly etwas falsch machen.

Kann jemand sein Testbeispiel zur Arbeit bringen oder aufzeigen, was ich falsch mache?

Antwort

1

Das Scala-Plugin ist ein wenig instabil. Versuchen Sie, das Projekt zu schließen und wieder zu öffnen, was normalerweise hilft.

+1

Project-> Clean sollte auch den Trick tun, ohne einen Neustart zu benötigen. –

1

Leider haben Sie nichts falsch gemacht. Scalas Eclipse-Plugin hat bessere Tage gesehen, aber es wurde neu geschrieben, um einige der jüngsten Funktionen zu nutzen, die eine bessere Integration ermöglichen, und die vorliegende Version ist fehlerhaft.

Im Moment empfehle ich NetBeans. Oder IDEA, wenn du das Geld hast.

+0

Sie können die IDEA EAP immer verwenden, wenn Sie kein Geld für etwas ausgeben möchten, mit dem Sie experimentieren. –

1

Netbeans funktioniert ~ ok, hat aber auch Probleme. Im Moment habe ich ein gutes Eclipse 3.4 + Scala Plugin 2.7.5 Final, das sehr gut funktioniert. Ich schlage vor, Sie eine saubere Installation von Eclipse 3.4, Scala 2.7.5, reinigen Sie Ihr Projekt usw. Haben Sie das Projekt mit dem Scala-Projekt Schöpfer erstellt? d. h. Neues Projekt erstellen -> Scala-Projekt? All dies ist natürlich, wenn nichts anderes für Sie arbeitet.

2

Ich löse das Problem, indem ich das Projekt säubere, dann gehe zur Klasse mit der Hauptmethode und baue sie mit strg + s (automatisch aufbaut). Klappt wunderbar.

+0

nur um darauf hinzuweisen, hatte ich die gleichen Probleme mit Netbeans kompilieren beim Speichern Feature on.turning off (Projekt-> Eigenschaften-> Kompilieren) und manuell Kompilieren gearbeitet. –

2

Es ist ein bisschen hässlich, aber man kann

package hello 

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

Platz in einer Datei HelloWordSrc.scala (oder was auch immer Sie wollen statt der Hinter „Src“), vielleicht das Projekt reinigen einmal, und dann Eclipse sollte es ausführen. Der „erweitert Application“ hat für mich nie in Eclipse arbeiten, aber das Plugin sucht nach einer Haupt-Methode in dem Code, die aus irgendeinem Grunde nicht den gleichen Namen

prost durch die Namen der Datei als Designated haben

2

Hat genau das gleiche Problem. Die Lösung für mich war:

  • Zum Run-> Run Configuration
  • neue JavaApplication Konfiguration erstellen, in dem manuell den vollständigen Klassennamen angeben (zB hello.HelloWorld)
  • Nehmen und laufen

Das sollte es sein.

EDIT

In Bezug auf die Ursache des Problems ist IMHO Eclipse Datei HelloWorld.class Suche ausgeführt werden. Was es jedoch suchen sollte, ist HelloWorld $.Klasse (oder umgekehrt). Aber diese Annahme könnte falsch sein ...

4

Ich traf die gleiche Frage letzte Nacht. Ich habe es behoben, indem ich a) alle vorhandenen Scala-Laufkonfigurationen entfernt habe und dann (ich mache keine Witze) einen Zeilenumbruch vor der ersten geschweiften Klammer hinzufüge.

Eine andere Sache, die ich getan habe, ist in die bestehende Laufkonfiguration zu gehen und etwas Müll in die Registerkarte "Argumente" hinzuzufügen. Ich ignoriere die Argumente trotzdem, so dass sie nicht die Ausgabe des Programms nicht beeinträchtigte, aber es hat das Plugin Haupt wieder zu finden

+0

einen Zeilenumbruch vor der ersten geschweiften Klammer hinzufügen. Mein Tag gerettet! –

4

Ich schlug auch diesen Fehler mit dem folgenden Code:

package hello 

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

Der Fehler war class anstelle von object, als ich zu object wechselte, lief es gut in Eclipse.

+0

Das war es, vielen Dank Brent! –

+0

Ich bin froh, dass ich dir ein paar Schmerzen ersparen konnte. –

2

Ich habe das gleiche Problem. Hier ist, wie ich es behoben habe: Rechtsklick auf Ihr Projekt, wählen Sie "Eigenschaften-> Java Build Path", können Sie sehen, die "Standard-Ausgabeordner" ist "Ihr Projekt/bin". Ändern Sie es in "Ihr Projekt/Klassen", dann reinigen und erstellen Sie Ihr Projekt neu. Ein paar Beschwerden werden vielleicht immer noch angezeigt, aber es wird durchkommen - stellen Sie einfach sicher, dass die kompilierten ".class" Dateien unter dem Ordner "classes" generiert werden

Ich vermute, dass es etwas mit der zugrunde liegenden Java-Ausführungs-Engine/Konfiguration zu tun hat . Nicht ganz sicher, weil ich mit Java nicht vertraut bin.

+0

Saubere und Wiederaufbau-Projekt war genug für mich. –

-3

Einfache Antwort: (. 2.9 *) , wenn Sie (NetBeans OR Eclips) unter Verwendung Starten Sie einfach das Programm sonst die Klasse kann es

in einer anderen Klasse verschieben hilft
0

Wenn Sie eine aktuelle Version von scala verwenden, Sie sollten verwenden

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

App, nicht Anwendung. Anwendung war der 2.8 oder 2.7 Weg. Ob das das einzige Problem ist, ist eine andere Frage.

Verwandte Themen