wake-up-neo.com

Das Scala-Projekt kann nicht in Eclipse kompiliert werden. "Konnte nicht die Hauptklasse finden."

Ich habe Eclipse 3.5.2 und das heutige Scala-Plugin von/update-current (das ist Scala 2.8 final) installiert. Ich kann Scala-Projekte kompilieren und ausführen, die aus einem einzelnen Einzelobjekt bestehen, das main () implementiert. 

Wenn ein Projekt mehr Klassen enthält, erhalte ich die Fehlermeldung "Die Hauptklasse wurde nicht gefunden".

Ich habe versucht, nach der Lösung zu suchen, und habe festgestellt:

Eclipse sucht korrekt nach der Main $ -Klasse, nicht nach der Main-Klasse
* Unter Debug-Konfigurationen wird meine Hauptklasse korrekt als mypackage.Main identifiziert
* Mein Plugin ist auf dem neuesten Stand und wird für meine Eclipse-Version empfohlen
* Reinigen, Neustarten usw. hilft nicht. 

Das gleiche Projekt wird mit scalac kompiliert.

Vielen Dank für alle Ideen, wie Sie dieses Problem lösen können.

EDIT: MatthieuF schlug vor, den Code zu posten. 

Dieser Ausschnitt erzeugt einen Fehler. Es ist nicht der idiomatischste Code, aber ich habe ihn so geschrieben, um meine Umgebung zu testen. Ich habe es als einzelne Datei und als separate Dateien versucht. Es funktioniert mit Scalac.

import swing._

class HelloFrame extends Frame {
        title = "First program"
        contents = new Label("Hello, world!")
}

object Hello {
  val frame = new HelloFrame    
  def main(args : Array[String]) : Unit = {
        frame.visible = true
   }
}

ABER wenn ich die Definition von HelloFrame innerhalb von Hello verschachtele, funktioniert es. Dieses Snippet läuft perfekt:

import swing._

object Hello {

    class HelloFrame extends Frame {
        title = "First program"
        contents = new Label("Hello, world!")
    }

    val frame = new HelloFrame

    def main(args : Array[String]) : Unit = {
        frame.visible = true
    }
}
23
Thomas Heywood

Für mich bestand das Problem darin, dass ein Build-Fehler auftrat (siehe Registerkarte "Probleme"), der das Kompilieren verhinderte. Hoppla! Der Grund für den Fehler liegt darin, dass das Ausführungsmakro trotz des fehlgeschlagenen Kompilierungsschritts fortgesetzt wird und versucht, Klassendateien auszuführen, die dort erwartet werden. Sie sind nicht vorhanden, da ein Build-Fehler beim Kompilieren aufgetreten ist. Daher wird Main nicht gefunden (nicht kompiliert).

Das Problem wird behoben, wenn der Build erfolgreich abgeschlossen werden kann, d. H. Fehler behoben wurden.

Ich denke, theoretisch kann es kompliziertere Gründe dafür geben, dass Ihr Build nicht erfolgreich abgeschlossen wird und nicht unter Probleme aufgeführt ist.

21
ninjagecko

Eine Möglichkeit ist, dass Sie versuchen, mit Strg-F11 zu starten, jedoch aus einer anderen Klasse.

Das Scala Eclipse Plugin hält sich nicht an die Standardeinstellungen für das Starten von Java. In Einstellungen-> Ausführen/Debuggen-> Starten gibt es einige Optionen Startvorgang-> Immer die zuvor ausgewählte Anwendung starten usw. Dies funktioniert derzeit nicht im Scala Eclipse-Plugin. Um ein bestimmtes Hauptfenster zu starten, müssen Sie es vom Editor für die Klasse aus starten.

Hierfür wurde ein Fehler gemeldet. http://scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour

BEARBEITEN: Dies ist jetzt (meistens) behoben.

5
Matthew Farwell

Für mich war das Eclipse-spezifische Problem. Ich habe festgestellt, dass .class-Datei überhaupt nicht erstellt wurde. Das bin-Verzeichnis hat also keine Klassen kompiliert. Als ich die * .scala-Datei manuell mit * .sbt kompilierte und in das bin-Verzeichnis kopierte, funktionierte es wie erwartet und es funktionierte nicht, bis ich Scala-Plugin in Eclipse neu installierte.

4
user1459144

Ich würde ein ähnliches Problem lösen, indem Sie "Project-> Clean .." beim nächsten automatischen Erstellen ausführen.

2
Leon Rom

Ich hatte dieselbe Fehlermeldung mit einer von mir erstellten Java-Anwendung.

Das Problem war, dass ich (obwohl in Eclipse) ein jar gelöscht habe, das zum Java-Erstellungspfad gehörte , ohne es aus dem Java-Erstellungspfad (Projektfenster Eigenschaften) zu löschen. Wenn ich es tat, konnte die Klasse kompilieren und erneut laufen.

1
bluish

Wenn Sie Intellij verwenden, markieren Sie das Verzeichnis als Quellstammverzeichnis

0
azzurolilc

Überprüfen Sie scala-ide.log

Für mich war das Problem, dass es Fehler gab bei:

AppData\Local\Temp\sbt_10d322fb\xsbt\ClassName.scala: 16: Fehler: nicht gefunden: Wert beim Eintragen in die Phase Als Eingabe in die Phase (currentRun.flattenPhase.next) {s fullName separator}

0
Daniel Sobrado

Haben Sie ein richtiges Build-Tool-Setup? Wie bei sbt hast du es installiert? 

Sie können die Version von $ sbt --version überprüfen

Wenn es nicht eingerichtet ist, können Sie es hier herunterladen http://www.scala-sbt.org/download.html

Möglicherweise müssen Sie Ihren Eclipse nach der Installation neu starten. 

0
bugs

Stellen Sie sicher, dass die .class-Dateien vorhanden sind, normalerweise unter dem Verzeichnis bin.

Wenn Sie Fehler in nicht verknüpften Dateien in demselben Projekt haben, kann die Kompilierung fehlschlagen und es werden keine .class-Dateien erstellt.

0
starblue

Ich bin mit diesem Problem konfrontiert. Ich habe gerade den Paketnamen gelöscht, die Scala-Klasse erstellt. Schließlich funktioniert es einwandfrei.

0
Ashiq Imran

Kopieren Sie einfach Ihren XXX.scala-Dateicode. Entfernen Sie das Paket und erstellen Sie eine neue Scala-Klasse. Fügen Sie Ihren XXX.scala-Code ein. (Wenn Sie Maven verwenden, führen Sie eine Maven-Bereinigung und Erstellung durch.) Führen Sie die Konfiguration erneut aus. Das funktioniert für mich.

0
Ashiq Imran

Es kann vorkommen, dass Projekte, die Fehler enthalten, zum Erstellungspfad der Anwendung hinzugefügt werden, was den Abschluss der erfolgreichen Kompilierung verhindert. Stellen Sie sicher, dass Sie ein solches Projekt aus dem Erstellungspfad entfernen, bevor Sie die Anwendung ausführen.

Durch das Entfernen dieser Projekte wurde das Problem für mich gelöst. 

0
Maqsood Ahmad