Question

J'ai installé Eclipse et le plugin Scala 3.5.2 aujourd'hui de / mise à jour courant (qui est Scala 2.8 final.) Je peux compiler et exécuter des projets Scala consistant en un seul objet singleton qui implémente principal ().

Mais, si un projet contient plusieurs classes, je reçois l'erreur « Impossible de trouver la classe principale ».

J'ai essayé la recherche de la solution et je découvrais:

Eclipse est à la recherche correctement pour la classe principale $, et non la classe principale
* Sous Configurations de débogage, ma classe principale est correctement identifiée comme mypackage.Main
* Mon plug-in est à jour et recommandé pour ma version d'Eclipse
* Le nettoyage, le redémarrage, etc. ne l'aide.

Le même projet établira avec scalac.

Merci pour toutes les idées sur la façon de résoudre ce problème.

EDIT: Je MatthieuF suggère afficher le code.

Cet extrait produit une erreur. Ce n'est pas le plus le code idiomatiques, mais je l'ai écrit cette façon de tester mon environnement. Je l'ai essayé en un seul fichier et sous forme de fichiers séparés. Il fonctionne avec 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
   }
}

Mais, si je imbriquer la définition de HelloFrame au sein Bonjour, cela fonctionne. Cet extrait fonctionne parfaitement:

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
    }
}
Était-ce utile?

La solution

Pour moi, le problème était qu'il y avait une erreur de génération (voir l'onglet Problèmes) qui empêchait la compilation; Oups! La raison pour laquelle vous voyez l'erreur est que la gestion macro produit en dépit de l'étape de compilation a échoué, et les tentatives d'exécuter des fichiers de classe, il attend d'être là; ils n'existent pas parce qu'il y avait une erreur de construction empêcher la compilation, il dit qu'il ne peut pas trouver principal (non compilé).

problème disparaît lorsque la construction peut mener à bien, à savoir les erreurs sont corrigées.

Je suppose que, théoriquement, il peut y avoir des raisons plus complexes de votre construction ne termine pas avec succès qui ne figurent pas dans les problèmes.

Autres conseils

Il est possible que vous essayez de lancer en utilisant ctrl-F11, mais d'une autre classe.

Le plugin Eclipse Scala ne respecte pas les valeurs par défaut pour le lancement de Java. Dans Préférences-> Exécuter / Debug-> Lancement, il y a quelques options de lancement exploitation-> Toujours Lancer la demande précédemment sélectionné, etc. Cela ne fonctionne pas actuellement dans l'éclipse Scala plugin. Pour lancer un spécifié principal, vous devez lancer à partir de l'éditeur pour la classe.

Il y a eu un bug soulevé pour cela. http: //scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour

EDIT:. Ceci est maintenant (la plupart du temps) fixe

Pour moi, il était problème spécifique Eclipse. J'ai remarqué que le fichier .class n'a pas été construit du tout. Donc répertoire bin ne pas les classes compilées. Quand je compilé manuellement * .scala fichier en utilisant * .sbt et copié dans le répertoire de bin il fonctionnait comme prévu. J'ai essayé différents trucs et astuces et il n'a pas été travaillé jusqu'à ce que je Scala RÉINSTALLÉS plugin dans Eclipse .

Je résoudre le même problème par executig "Projet-> Clean .." avec la prochaine construction automatiquement.

J'ai eu le même message d'erreur avec une application Java faite par moi-même.

Le problème est que je supprimé (bien que dans Eclipse) un pot qui appartenait à la Chemin Java build , sans le supprimer du chemin de compilation Java (de projet à la fenêtre Propriétés). Quand je l'ai fait la classe pourrait compiler et exécuter à nouveau.

Assurez-vous que les fichiers .class existent, généralement sous le répertoire bin.

En particulier, si vous avez des erreurs dans les fichiers indépendants dans le même projet, puis la compilation peut échouer, et aucun fichier .class sera produit.

Il peut être le cas des projets, contenant des erreurs, ajoutés au chemin de génération de l'application qui empêche l'achèvement de la compilation réussie. Assurez-vous de supprimer tout projet du chemin de construction avant de lancer l'application.

La suppression de ces projets a résolu le problème pour moi.

Avez-vous une configuration de l'outil de construction approprié? Comme SBT avez-vous installé?

Vous pouvez vérifier sa version par $ SBT --version

Si ce n'est pas configuré, vous pouvez télécharger ici http: //www.scala-sbt. org / download.html

Vous pourriez avoir à redémarrer votre éclipse après l'installation.

Il suffit de copier le code de votre fichier XXX.scala. Retirez l'emballage et créer une nouvelle classe Scala. Coller le code XXX.scala. (Si vous utilisez Maven, faire un nettoyage maven et construire.) Configuration Relancez. Cela fonctionne pour moi.

J'ai fait face à ce problème. Je viens de supprimer le nom du package, créé classe scala, écrit le même code, Set Construire à « Construire automatiquement ». Enfin, il fonctionne parfaitement bien.

Vérifier scala-ide.log

Pour moi, la question est qu'il y avait des erreurs sur:

AppData \ Local Temp \ sbt_10d322fb \ xsbt \ ClassName.scala: 16: Erreur: non trouvée: Valeur enteringPhase     enteringPhase (currentRun.flattenPhase.next) {s Séparateur fullName}

Si vous utilisez Intellij, répertoire de la marque en tant que root source

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top