Partage
  • Partager sur Facebook
  • Partager sur Twitter

"Impossible de trouver ou de charger la classe principale"

Sujet résolu
4 octobre 2014 à 21:30:36

Pour tout ceux qui galère encore sur ce problème, Sijuvabien donne la réponse exacte et très bien expliquée.

J'étais confronté à ce problème aussi et tout fonctionne très bien désormais.

Merci,

Renaud.

  • Partager sur Facebook
  • Partager sur Twitter
15 novembre 2014 à 11:05:17

Il suffit d'ajouter la classe courante au classpath lors de la compilation.

Cela se fait tout simplement en utilisant la commance 

java -cp . HelloWord

En supposant que le nom de votre classe est HelloWord!

  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2014 à 17:15:57

Effectivement ça fonctionne pour moi.

-> suppression du "package <nomDuPackage>; " dans la classe principale

-> compile

-> Enjoy

THX !! :)

  • Partager sur Facebook
  • Partager sur Twitter
22 février 2015 à 15:21:33

Problème non résolu pour moi dsl... j'ai bien regardé tous les postes, et aucunes solutions ne marchent...

java
|
|
reseau
Message.class   Message.java
|
|
adresse
Octet.class   Adresse.class   Adresse.java

(java contient un package "reseau" qui contient un package "adresse")

La classe octet a été créée par quelqu'un d'autre, je veux compiler message et le lancer. Je vous balance les commandes :

dans Message.java :
package reseau.adresses;
javac -classpath /home/username/java/reseau/adresses:. reseau/Message.java (marche)
java reseau.Message   ou   java -classpath /home/username/java/reseau:. reseau.Message (ne marche pas)

-
Edité par nicolasblin 22 février 2015 à 15:23:38

  • Partager sur Facebook
  • Partager sur Twitter
6 mars 2015 à 1:08:43

Salut à tous, j'ai le même problème...enfin presque. je m'explique : j'avais le même problème alors j'ai tout bien suivi tout ce qui à été dis plus haut et rien du tout. Me disant que j'avais probablement fait un truc pas bien dans l'installation j'ai tout enlevé pour tout remettre et la miracle, ça marche...jusqu'au lendemain!!! je suis retourné dans les forum et j'ai essayé de trouver une solution en regardant les variables utilisateur d'autres personnes et j'ai remarqué que sur certaines, %PATH% était inscrit à la fin. j'essaie et la BINGO ça remarche. Et la ce soir, je reteste et pour rezutzutuzt ça remet ce foutu message d'erreur. je me suis dis ça marche dans un ses, pourquoi pas dans l''autre. j'enlève le %PATH% et ça remarche...franchement c'est lourd. n'y aurait il pas une solution??? j'ai vraiment envie d'apprendre à programmer en java mais la ça commence à devenir agaçant.

PS : je suis sous W8 et je ne travaille qu'avec un invite de commande et un éditeur de text (bloc note) car à ce qu'il paraît c'est bien mieux pour apprendre à programmer
  • Partager sur Facebook
  • Partager sur Twitter
14 mars 2015 à 11:35:02

Bonjour,

J'ai le même problème que tout le monde ou presque ici.

Je suis le cours JAVA. et j'en suis au fameux programme HELLO WORLD.

J'ai suivi tout ce qui est écrit dans le cours. et je me retrouve avec cette erreur :

"Erreur : Impossible de trouver ou charger la classe principale sdz1. J'ai lu tout ce qui a été écrit dans cette page du cours concernant la compilation via JDK plutôt que par JRE (si j'ai bien tout compris). A un moment, il est demandé de supprimé le fichier .class qui se trouve dans le projet afin de bien constater la compilation par la commande javac, etc.etc.

J'ai donc supprimé le fichier sdz1.class qui se trouvait dans projet1/bin/projet1/

Ensuite j'ai lancé javac sdz1.java    => tout se passe bien

Par contre je constate qu'à la différence d'eclipse (où j'avais un fichier class dans projet1/bin/projet1/ de mon projet), j'ai un fichier sdz1.class qui se trouve dans projet1/src/projet1/, là où il y avait mon fichier sdz1.java

ENfin, tout ça pour dire que j'ai tenté d'exécuter java sdz1 dans tous les répertoires possibles du projet et rien n'y fait, j'ai toujours la même erreur.

Alors je me demande si ce n'est pas dû à la suppression du .class dans le répertoire bin....

car même sous eclipse ça ne fonctionne plus... exactement la même erreur.

mon code ressemble à ça :

package projet1;

public class sdz1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//pgm afficher hello world
		System.out.print("Hello WORLD !\n");
		
		System.out.println("My name is");
		
		System.out.println("\nCysboy");
		
		//  \n pour passer à la ligne ; \r pour un retour chariot ; \t pour une tabulation
		

	}

}

Et mon arborescence à ça :

...\eclipse\javaworkspace\projet1\bin\projet1   => là où se trouvait le fichier class que j'ai supprimé sur la demande du cours

...\eclipse\javaworkspace\projet1\src\projet1    => là où se trouve mon fichier java et donc le fichier class généré à l'exécution de la commande javac (je suppose que comme c'est là que je me trouvais quand je l'ai lancée, c'est là qu'il a été mis)

QUoi qu'il en soit, j'ai essayé d'exécuté à tous les nouveaux et rien n'y fait. J'ai également tenté de supprimer la valeur de ma variable CLASSPATH (en laissant néanmoins le . car je pense que ça veut juste dire dossier courant).

Est-ce quelqu'un pourrait m'aider s'il-vous-plaît ?

Merci d'avance




  • Partager sur Facebook
  • Partager sur Twitter
14 mars 2015 à 11:53:18

Re

Alors j'ai tout recommencé et cette fois-ci, je n'ai pas supprimé le .class du répertoire bin\projet2 (oui il fallait bien lui trouver un nom au nouveau projet).

MAis ça ne fonctionne toujours pas... (tests à différents niveaux de l'arborescence)

L'avantage c'est que sous eclipse, ça marche encore grâce à ce fichier .class du répertoire bin.

je vais continuer à chercher du côté de la variable PATH. peut-être que je ne l'ai pas mise à jour correctement (et qu'elle fonctionnerait pour javac mais pas java)

merci d'avance à ceux qui prendront le temps :)

  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2015 à 17:10:49

@kalliemerraut pour effectuer l'exécution en ligne de commande d'un fichier byte code du type "Nom.class", il est préférable pour éviter les confusions avec les variables qui pourrait être défini sur votre PC de préciser la localisation de votre "classpath" dans la ligne de commande.

Par exemple si vous avez un programme source "test.java", ouvrez une console windows et allez dans le répertoire où se trouve votre programme source :

1/ passez la commande : javac test.java pour obtenir un fichier résultat "test.class" dans le répertoire courant (si pas d'erreur à la compilation)

2/ pour exécuter ce fichier, passez la commande : java -cp "%cd%" tes

    remarques : -cp "%cd%" permet d'indiquer que le/les class se trouve dans le répertoire courant (ne pas oublier les doubles guillements)

Voilà ça devrait marcher avec ça, bon courage ;-)

  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2015 à 10:51:59

Bonjour @keepcool61,

Merci pour ta réponse. Tes explications sont claires :)

Malheureusement, ça ne fonctionne pas :(

Voici ce que j'ai fait et j'ai toujours la même erreur :

D:\WWW\eclipse\javaworkspace\projet2\src\projet2>
D:\WWW\eclipse\javaworkspace\projet2\src\projet2>java -cp "%cd%" HelloWorld
Erreur : impossible de trouver ou charger la classe principale HelloWorld

D:\WWW\eclipse\javaworkspace\projet2\src\projet2>dir
 Le volume dans le lecteur D s'appelle Data
 Le numéro de série du volume est 6A15-941B

 Répertoire de D:\WWW\eclipse\javaworkspace\projet2\src\projet2

14/03/2015  11:48    <REP>          .
14/03/2015  11:48    <REP>          ..
14/03/2015  11:48               507 HelloWorld.class
14/03/2015  12:38               766 HelloWorld.java
               2 fichier(s)            1 273 octets
               2 Rép(s)  152 828 575 744 octets libres

D:\WWW\eclipse\javaworkspace\projet2\src\projet2>




j'ai tenté avec les deux projets (tous deux helloworld) mais ça ne fonctionne pas non plus :

D:\WWW\eclipse\javaworkspace\projet1\src\projet1>dir
 Le volume dans le lecteur D s'appelle Data
 Le numéro de série du volume est 6A15-941B

 Répertoire de D:\WWW\eclipse\javaworkspace\projet1\src\projet1

14/03/2015  11:05    <REP>          .
14/03/2015  11:05    <REP>          ..
11/03/2015  22:16               381 sdz1.java
               1 fichier(s)              381 octets
               2 Rép(s)  152 828 571 648 octets libres

D:\WWW\eclipse\javaworkspace\projet1\src\projet1>
D:\WWW\eclipse\javaworkspace\projet1\src\projet1>
D:\WWW\eclipse\javaworkspace\projet1\src\projet1>javac sdz1.java

D:\WWW\eclipse\javaworkspace\projet1\src\projet1>
D:\WWW\eclipse\javaworkspace\projet1\src\projet1>java sdz1
Erreur : impossible de trouver ou charger la classe principale sdz1

D:\WWW\eclipse\javaworkspace\projet1\src\projet1>
D:\WWW\eclipse\javaworkspace\projet1\src\projet1>dir
 Le volume dans le lecteur D s'appelle Data
 Le numéro de série du volume est 6A15-941B

 Répertoire de D:\WWW\eclipse\javaworkspace\projet1\src\projet1

21/03/2015  10:47    <REP>          .
21/03/2015  10:47    <REP>          ..
21/03/2015  10:47               495 sdz1.class
11/03/2015  22:16               381 sdz1.java
               2 fichier(s)              876 octets
               2 Rép(s)  152 828 571 648 octets libres

D:\WWW\eclipse\javaworkspace\projet1\src\projet1>java -cp "%cd%" sdz1
Erreur : impossible de trouver ou charger la classe principale sdz1

D:\WWW\eclipse\javaworkspace\projet1\src\projet1>

Où est-ce que je me suis trompée ?

Merci encore.





-
Edité par kalliemerraut 21 mars 2015 à 10:54:42

  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2015 à 14:54:29

Oh mon dieu! Je galère depuis 1 h, et je découvre que mes noms sont case sensitiv...

je faisais ma ligne de commande : >java project1/monjava  (suivre le post de SijuVabien de 8 juin)

j'avais le message "impossible de trouver ou charger la classe principale project1.monjava". Je jure et je plante des aiguilles dans une petite poupée que j'ai appelé Sijuvabien.

je fais >java project1/MonJava

et ça marche!!!

Je suis sous windows8, je suis perturbée par ce résultat... je croyais au lapin de Pâques, que le McDo ne faisait pas trop grossir, et au case Insensitiv de mes noms de fichiers ... que me reste-t-il?

Eureka, je viens de comprendre, MonJava est un argument de ligne de commande, il peut être case sensitiv... Ouf! mes convictions sont sauvées.

Sijuvabien, désolée si tu as des bobos dans les jours qui viennent, j'ai planté mes aiguilles un peu vite.

  • Partager sur Facebook
  • Partager sur Twitter
6 mai 2015 à 9:46:35

merci beaucoup Denokan
  • Partager sur Facebook
  • Partager sur Twitter
6 mai 2015 à 9:51:05

votre aide svp, je suis entrain de developper un programme en java mais le popupmenu ne s'affiche pas sur mon panneau parcequ'uniquement j'ai changé le gestion par defaut (FlowLayout en BorderLayout) de panneau alors je ne sais quoi faire!!

Merci

  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2015 à 0:59:19

Merci Beaucoup Sijuvabien! ça fonctionne de mon côté. Au final c'était donc un problème de package!!!!! Merci encore; j'en devenais malade.
  • Partager sur Facebook
  • Partager sur Twitter
7 juin 2015 à 14:52:40

compiler avec javac nomClass.java

dans le même répertoire vérifier l'existence de fichier nomClass.class

exécuter par la commande : java nomClass (sans extension)   et non pas : java nomClass.class

sous le OS CentOS ça marche bien.

  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2015 à 2:36:14

Pour exécuter un programme xyz.java dans un répertoire local
1) Commenter d'éventuelles déclaration de package dans les fichiers sources .java 
    qui pourraient créer des conflits de classpath
2) Compiler les différents fichiers Java contenus dans le répertoire
javac *.java
3) Executer le programme xyz.java en utilisant un classpath local
(i.e. le répertoire racine des classes), ici «.»
java -classpath . xyz

-
Edité par ClaudeCoulombe 21 octobre 2015 à 2:42:50

  • Partager sur Facebook
  • Partager sur Twitter
6 novembre 2015 à 9:30:08

Slt j'ai tout testé ....j'ai c deux fichier vc.class et vc.java dans le mm dossier.

que je me place dans n'importe quel dossier avec ou non le package sa fé pareil...

  • Partager sur Facebook
  • Partager sur Twitter

www.warchess.ovh

6 novembre 2015 à 9:42:40

Salut,

Quelle est l'arborescence de ton projet ? Je te conseil de lire le post de Sijuvabien sur la 1ere page !

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2015 à 15:48:24

Bonsoir !!

Moi aussi j'avais le même problème et j'ai essayé la solution de @Sijuvabien et tout fonction super bien!!!

-
Edité par Lionel Fery 8 novembre 2015 à 15:54:20

  • Partager sur Facebook
  • Partager sur Twitter
16 janvier 2016 à 17:01:11

Fonctionne à merveille.

Effectivement, retirer la ligne " Package <nomdupackage> " suffisait amplement, et cela fonctionne correctement, merci !

  • Partager sur Facebook
  • Partager sur Twitter
28 janvier 2016 à 17:05:46

ok moi j'ai résolu le problème en supprimant la première ligne de mon code qui était :

package fenêtre;        (importation)

après j'ai recompiler avec javac et lancer avec java dans l'invite de commande et çà à marcher

  • Partager sur Facebook
  • Partager sur Twitter
27 avril 2016 à 13:55:33

easy ! fait attention au majuscules et au minuscules lorsque tu tape dans la cmd : java  NomClasse 

en tout cas c'était ça le problème pour moi 

bonne chance

  • Partager sur Facebook
  • Partager sur Twitter
Mr_GooD
12 avril 2017 à 23:04:02

Il faut faire "cd ..", puis tu fais java <ton répertoire>/Main
  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2017 à 1:32:55

merci Sijuvabien.......

j'ai trouvé et ça marche bien

à bientôt .

  • Partager sur Facebook
  • Partager sur Twitter
19 février 2018 à 3:26:54

Il faut renommer ta classe main . Dans l'ide...C'es ta dire créer une class qui s'apelle main et la nommer main dans le code.
  • Partager sur Facebook
  • Partager sur Twitter

www.warchess.ovh

2 mai 2018 à 0:08:55

J'utilise Netbeans sous Windows mais il doit y avoir un équivalent avec Eclipse,
pour ne pas se poser la moindre question sur le chemin à renseigner dans la commande,
faire ceci (exemple avec la classe Maclasse):

clic droit sur le fichier Maclasse.class visible dans l’arborescence des projets de l'IDE, aller dans propriétés et copier le chemin du runtime classpath .
(si le .class est absent cliquer sur le bouton Build Project)

commande: javac machin... est inutile car le fichier source déjà compilé par Netbeans à chaque ''Build'' .
(mais on peut aller chercher le runtime classpath du .java aussi pour faire cette étape manuellement)

commande: java  -classpath  chemin-du-runtime-classpath-copié  Monpackage.Maclasse .

-
Edité par remidon 2 mai 2018 à 0:35:03

  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2019 à 11:56:17

Merci Sijuvabien, probléme résolut après avoir trouvé ta solution.
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2019 à 13:34:57

Bonjour,

On va arrêter les déterrages de déterrage de déterrage ...

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

-
Edité par Benzouye 11 juin 2019 à 13:35:32

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL