L'éditeur ne contient pas de type principal


92

Je viens de parcourir l'exemple de code Scala sur le site Web de Scala, mais j'ai rencontré une erreur ennuyeuse en essayant de l'exécuter.

Voici le code: http://www.scala-lang.org/node/45 . En l'exécutant sur Eclipse, j'ai reçu ce message «L'éditeur ne contient pas de type principal» qui l'empêche de fonctionner.

Dois-je faire quelque chose ... c'est-à-dire diviser ce fichier en plusieurs fichiers, ou quoi?

Réponses:


37

J'ai beaucoup de problèmes avec Eclipse et Scala. Cela aide si vous nettoyez votre espace de travail et reconstruisez votre projet.

Parfois, Eclipse ne reconnaît pas correctement les fichiers qu'il doit recompiler :(

Edit: Le code fonctionne bien dans Eclipse


4
Fait la même expérience. De plus, la fermeture et l'ouverture du projet me semblaient parfois nécessaires.
Fabian Steeg du

Merci @nuriaion et @Fabian, oui, la réouverture du projet l'a fait fonctionner. Merci encore pour vos conseils.
Helen Neely

3
@Helen Dans Eclipse => Projet => Nettoyer, vous pouvez nettoyer les projets, la reconstruction se déroulera automatiquement ... Vous n'avez donc pas à fermer et rouvrir le projet.
nuriaion

l'ouverture et la fermeture du projet scala m'a donné: Des erreurs se sont produites lors de la construction. Erreur lors de l'instanciation du générateur 'ch.epfl.lamp.sdt.core.scalabuilder'. Le plug-in "ch.epfl.lamp.sdt.core" n'a pas pu instancier la classe "scala.tools.eclipse.Builder". Impossible d'initialiser la classe scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder Plug-in "ch.epfl.lamp.sdt.core" n'a pas pu instancier la classe "scala.tools.eclipse.Builder". Impossible d'initialiser la classe scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman Sangat

87

Dans Eclipse, assurez-vous d'ajouter votre dossier source dans les propriétés du projet -> chemin de construction java -> source. Sinon, la fonction main () peut ne pas être incluse dans votre projet.


Notez que cela peut également être accompli en faisant glisser et en déposant les fichiers dans «src» dans la vue de l'explorateur de dossiers.
Max von Hippel le

Cela a résolu mon problème, mais après la fermeture et l'ouverture du projet.
Dit le

26

Vous devez vous assurer que vos fichiers .java se trouvent dans le dossier .src dans eclipse. J'ai eu exactement le même problème jusqu'à ce que je le comprenne.


26

Un moyen plus simple consiste à fermer le projet et à le rouvrir.


21

Assurez-vous simplement que le dossier dans lequel vous travaillez est ajouté au chemin construit:

right-clickvotre dossier -> build Path->Use as source Folder

et il devrait maintenant mainy trouver .


6

J'ai eu le même problème. J'ai essayé toutes sortes de choses. Et j'en suis venu à le savoir

  1. Mes fichiers .java n'étaient pas liés et
  2. ils n'ont pas été placés dans le dossier «src».

Ce que j'ai fait:

Propriétés du projet >> Chemin de construction Java >> Source

  • Supprimé le dossier d'origine 'src' qui était vide à l'aide de l'option 'Supprimer'
  • Ajout de la source qui contenait mes fichiers .java source à l'aide de l'option 'Ajouter un dossier'

Cela a résolu l'erreur.


5

Vous pouvez essayer d'exécuter la fonction principale à partir de la barre latérale de contour d'Eclipse.

Solution


Quand je fais cela, je reçu un message d'erreur: <project root> [in Tut_RMI] does not exit. (Le nom du projet est Tut_RMI) Ce nom de projet est -il invalide?
Casper

5
***

Fermez et rouvrez

*** votre projet en éclipse. Parfois, il y a des problèmes de liaison. Cela a résolu mon problème


3

Une solution rapide:

Tout d'abord, excluez le package: Faites un clic droit sur le package source >> Build Path >> Exclure

Puis incluez-le à nouveau: Faites un clic droit sur le paquet source >> Chemin de construction >> Inclure


3

Ce que vous devez faire est de créer un projet Java, mais assurez-vous de placer ce fichier dans le fichier de package de ce projet, sinon vous rencontrerez la même erreur.

entrez la description de l'image ici


2

Ce code est valide. Avez-vous essayé de le compiler à la main en utilisant scalac? Aussi, avez-vous appelé votre fichier "carnet d'adresses", tout en minuscules, comme le nom de l'objet?

De plus, j'ai trouvé qu'Eclipse, pour une raison quelconque, définissait la classe principale sur ".addressbook" au lieu de "addressbook".


Merci Daniel, oui le fichier est nommé «carnet d'adresses» tout en minuscules. Je vais essayer de rouvrir le projet pour voir si cela aide.
Helen Neely

2

vous devez créer votre fichier en

en sélectionnant sur le côté droit vous trouverez votre nom de fichier,

sous qui trouvera le dossier src leur clic droit sélectionner -> option de classe

leur votre fichier doit être créé


2

Assurez-vous que votre fichier .java est présent soit dans le package str, soit dans un autre package. Si le fichier java avec la fonction principale est en dehors de tous les packages, cette erreur est générée.


2

J'ai fait face au problème similaire, résolu ce problème en cliquant avec le bouton droit sur la méthode principale dans la vue d'ensemble et en l'exécutant en tant qu'application Java.


1

J'ai juste eu ce problème aussi. La solution consiste à s'assurer qu'eclipse a créé le projet en tant que projet Java. Créez simplement un nouveau projet Java et copiez votre classe dans le dossier src (et importez les éventuelles dépendances). Cela devrait résoudre le problème.


Merci KullDox, pour votre commentaire. J'ai longtemps résolu le problème, mais j'espère que quelqu'un d'autre trouvera les solutions ici utiles.
Helen Neely

1

La bonne réponse est: la bibliothèque Scala doit précéder la bibliothèque JRE dans le chemin de construction.

Accédez à Java Buildpath> Order and Export et déplacez la bibliothèque Scala vers le haut


1

J'ai eu ce problème avec un projet Java que j'ai importé du système de fichiers (sous Eclipse Helios). Voici un indice: le code src ne semblait pas du tout compilé, car aucun répertoire "bin" ne s'est affiché.

J'ai dû créer un projet Java à partir de zéro (à l'aide de l'assistant), puis comparer les .projectfichiers des projets non opérationnels et actifs.

Le projet indiquant "L'éditeur ne contient pas de type principal" avait ceci comme "buildSpec" dans le fichier .project:

<buildSpec>
</buildSpec>

Mais le projet de travail avait ceci comme "buildSpec":

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

J'ai copié ceci et le projet importé a fonctionné.

Je sais que ma réponse est pour Java, mais le même problème pourrait être le cas pour votre projet Scala.


1

Peut-être que le fichier que vous avez créé se trouve en dehors du dossier src (source). Essayer d'appeler l'objet de classe (à partir du fichier situé dans le dossier src) à partir du fichier .java en dehors du dossier source entraîne la même erreur. Copiez le fichier .java dans le dossier source, puis compilez-le. L'erreur aura disparu.


1

J'ai eu le même problème. J'avais la classe principale du paquet src, dans un autre dossier. Je le déplace et corrige le dossier et résolu


1

lancez "eclipse -clean -refresh" depuis la ligne de commande. Cela a résolu le problème pour moi lorsque toutes les autres solutions ont échoué.


1

Cela pourrait être le problème avec le chemin de construction Java. Essayez les étapes ci-dessous:

  1. Aller aux propriétés du projet
  2. Accédez au chemin de construction java
  3. Allez dans l'onglet Source et ajoutez le dossier src du projet

Cela devrait résoudre le problème.


1

S'il s'agit d'un projet maven, veuillez vérifier que le fichier java est créé sous src / main / java

Si vous n'obtenez pas, veuillez modifier le chemin JRE et créer les fichiers java dans la structure de dossiers ci-dessus


0

Pour moi, dans Eclipse 3.6, ce problème se produit lorsque ma méthode principale n'est pas publique. J'ai causé le problème en ayant une méthode principale comme celle-ci:

static void main(String[] args) 

Le dubugger n'a pas pu détecter cela par lui-même. Je suis assez surpris qu'Eclipse ait oublié cela.


0

Dans le pire des cas, créez à nouveau le projet avec toutes les importations depuis le début. Dans mon cas, aucune des autres options n'a fonctionné. Ce type d'erreur indique qu'il y a une erreur dans les paramètres du projet. Une fois, j'ai réussi à le résoudre, mais une fois que de nouveaux développements ont été effectués, l'erreur est revenue. Tout recréer depuis le début m'a aidé à comprendre et à optimiser certains liens, et maintenant je suis convaincu que cela fonctionne correctement.


0

Suivez les étapes ci-dessous:

  1. Sauvegardez tous vos fichiers .java vers un autre emplacement
  2. supprimer tout le projet java
  3. Créez un nouveau projet java par un clic droit sur la racine et cliquez sur nouveau
  4. restaurer tous les fichiers vers un nouvel emplacement !!

0

Fichier >> Importer >> Projets existants dans l'espace de travail >> Sélectionnez Archive classée >> Parcourir et localiser le fichier >> Terminer. S'il est déjà importé d'une autre manière, supprimez-le et essayez-le de cette façon. J'avais le même problème jusqu'à ce que j'essaye ça.


0

Une dernière chose à vérifier: assurez-vous que votre fichier source contient la déclaration de package correcte correspondant au sous-répertoire dans lequel il se trouve. L'erreur mentionnée par l'OP peut être vue en essayant d'exécuter un "type principal" déclaré dans un fichier dans un sous-répertoire mais il manque la déclaration de package.


0

J'ai aussi ce problème après avoir changé le dossier source. La solution qui a fonctionné consiste simplement à modifier le fichier et à le sauvegarder.


0

Essayez «Mettre à jour le projet». Une fois que j'ai fait cela, l'option Exécuter en tant qu'application Java est apparue.


0

Dans mon cas particulier 'Hello World', la cause de ce problème était le fait que ma main()méthode était à l'intérieur de la Scalaclass .

J'ai mis la main()méthode sous la Scala objectet l'erreur a disparu.

C'est parce que Scala objecten termes Java est l'entité avec uniquement des membres statiques et des méthodes à l'intérieur.

C'est pourquoi Java public static void main()dans Scala doit être placé sous object.

(Scala classpeut ne pas contenir de statique à l'intérieur)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.