Scala projet ne compile pas dans Eclipse; “could not find the main class”.
J'ai installé Eclipse 3.5.2 et aujourd'hui Scala de plugin à partir de /jour-courant (c'est la Scala 2.8 final.) Je peux compiler et exécuter Scala projets consistant en un seul objet singleton qui implémente main().
Mais, si un projet contient plus de classes, j'ai d'erreur "could not find the main class" erreur.
J'ai essayé de chercher la solution et j'ai découvert:
Eclipse est bien à la recherche pour le Principal de classe$, pas la classe Principale
* en vertu de Debug Configurations, ma classe principale est correctement identifié comme mypackage.Principales
* mon plugin est jusqu'à ce jour et recommandé pour ma version d'Eclipse
* le nettoyage, le redémarrage de l'etc. n'aide pas.
Le même projet permettra de compiler avec scalac.
Merci pour toutes les idées sur la façon de résoudre ce problème.
EDIT: MatthieuF a suggéré que je devrais poster le code.
Cet extrait de code génère une erreur. C'est pas le plus idiomatique code, mais je l'ai écrit de cette façon pour tester mon environnement. Je l'ai essayé en un seul fichier et en tant que fichiers distincts. 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 nest la définition de HelloFrame dans Bonjour, il fonctionne. Cet extrait de code 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
}
}
- Vous pouvez poster votre code s'il vous plaît?
Vous devez vous connecter pour publier un commentaire.
Pour moi, le problème était qu'il y avait une erreur de compilation (voir les Problèmes de l'onglet) qui a été la prévention de la compilation, oups! La raison pour laquelle vous voyez l'erreur est que l'exécution de la macro continue malgré l'échec de l'étape de compilation, et tente d'exécuter des fichiers de classe il s'attend à être là; ils n'existent pas parce qu'il y avait une erreur de construction de prévention de la compilation, donc il dit qu'il ne peut pas trouver la main (non compilé).
Problème disparaît lors de la construction peut s'effectuer correctement, c'est à dire les erreurs sont corrigées.
Je suppose que, théoriquement, il peut être plus compliqué, les raisons de votre build n'est pas effectuée correctement, qui ne sont pas répertoriés dans les Problèmes.
Une possibilité est que vous essayez de lancer à l'aide de ctrl-F11, mais à partir d'une autre classe.
La Scala plugin Eclipse ne respecte pas les valeurs par défaut pour le lancement de Java. Dans les Préférences->Run/Debug->le Lancement, il y a quelques options de Lancement de l'Opération->Toujours Lancer précédemment sélectionné, application, etc. Actuellement, cela ne fonctionne pas de la Scala plugin eclipse. Pour lancer un certain principale, vous avez besoin de le lancer à partir de l'éditeur de la classe.
Il y a eu un bug réunis pour cette. http://scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour
EDIT: C'est maintenant (presque) fixe.
Pour moi, c'était l'Éclipse problème spécifique. J'ai remarqué que
.class
fichier n'était pas construite. Doncbin
répertoire n'ont pas de classes compilées.Quand j'ai compilé manuellement *.scala fichier à l'aide de *.sbt et copié à
bin
répertoire, il a été fonctionne comme prévu.J'ai essayé différents trucs et astuces, et il n'était pas fonctionné jusqu'à ce que je réinstallé Scala plugin dans Eclipse .
J'avais résoudre problème similaire par executig "Projet->Propre.." avec la prochaine en créant automatiquement.
J'ai eu le même message d'erreur avec une application Java réalisés par moi-même.
Le problème est que j'ai supprimé (même si à l'intérieur de l'Éclipse) un pot qui appartenait à la Java build path, sans le supprimer de la Java build path (projet de la fenêtre Propriétés). Quand j'ai vu la classe peut compiler et exécuter de nouveau.
Assurez-vous que le
.class
fichiers existent, généralement en dessous de labin
répertoire.En particulier, si vous avez des erreurs dans les fichiers non liés dans le même projet, la compilation peut échouer, et pas de
.class
de produire des fichiers.Il peut y avoir le cas de projets, contenant des erreurs, ajoutée à la construction de chemin d'accès de l'application qui empêche la réalisation de la compilation réussie. Assurez-vous de supprimer le projet de la construction du chemin avant l'exécution de l'application.
La suppression de ces projets résolu le problème pour moi.
Vous avez un bon outil de construction de l'installation? Comme sbt avez-vous installé?
Vous pouvez consulter sa version par $sbt --version
Si elle n'est pas de la configuration, vous pouvez le télécharger à partir d'ici http://www.scala-sbt.org/download.html
Vous devrez peut-être redémarrer votre eclipse après l'installation.
Il suffit de copier votre XXX.scala fichier de code. Retirez l'emballage et de créer une nouvelle Scala de Classe. Collez votre XXX.scala code. (Si vous utilisez maven, faire un maven nettoyer et créer.) Exécutez à nouveau la configuration. Cela fonctionne pour moi.
J'ai été confronté à ce problème. J'ai juste supprimé le nom du paquet, créé à la scala de classe, Écrit le même code, Ensemble Construire de Construire "Automatiquement". Enfin, Il fonctionne parfaitement bien.
Vérifier scala-ide.journal
Pour moi, le problème était qu'il y avait des erreurs sur:
AppData\Local\Temp\sbt_10d322fb\xsbt\ClassName.scala:16: erreur: pas trouvé: valeur enteringPhase
enteringPhase(currentRun.flattenPhase.next) { s fullName séparateur }
Si vous utilisez l'Ide, marque répertoire source de la racine