Impossible de trouver ou charger la classe [Résolu/Fermé]

-
Bonjour,

je viens de débuter en java et voilà mon premier problème est survenu..
" impossible de trouver ou charger la classe principale" suivi du nom de la classe
lorsque j'exécute la commande "JAVA" dans l'invite commande
j'ai fais tout d'abord la compilation du fichier .java avec la commande JAVAC
aucune erreur n'a parvenue lors de l'exécution de cette commande.

puisque je viens de commencer je ne sais pas vraiment si oui ou non mais voila mon tout petit premier programme (code source):


public class HelloImad { 
public static void main(String[] args) { 
int i = 0; 
while (i < 5) { 
System.out.println("Hello World !"); 
i++; 
} 
} 
}


Aidez moi svp
Afficher la suite 

9 réponses

Meilleure réponse
approuvée par Jean-François Pillou le 31 janv. 2019
Messages postés
1
Date d'inscription
lundi 2 juin 2014
Statut
Membre
Dernière intervention
2 juin 2014
5
10
Merci
Salut à tous!

Je peut peut être vous aider car mon problème ressemblait aux votre...(compilation qui fonctionne mais exécution qui ne veut pas démarrer: "Je trouve pas la fonction statique ou la classe qui la contient blablabla" <- Je m'en fiche fonctionnes un point c'est tout!).

Pour que tout fonctionne correctement il faut vérifier les points suivants:
  • Votre variable PATH contient bien le chemin vers le fichier bin du JDK (chez moi "C:\Program Files\Java\jdk1.6.0_45\bin"). Ca chez vous c'est bon car vous avez pu compiler (si vous avez un message d'erreur qui dit que javac, java... ne peut être trouvé ou que ce n'est pas une commande reconnue, votre premier soucis vient d'ici).
  • Truc tout bête mais vérifiez bien que votre classe contenant la fonction main publique et statique soit bien publique (le compilateur vous dira rien lui :/ ):


public class Main
{
 public static void main(String args[])
 {
  System.out.println("Hello world!");
 }
}
  • Enfin, les commande à exécuter pour compiler le tout sont (sous windows):


cd LeDossierContenantVosClasses        // Chez moi cd Bureau\TestJava
java -cp "%cd%" NomDeVotreClasse    // Dans l'exemple c'est Main (sans le class!)


La première commande vous place dans le dossier où il y a vos fichier .class (obtenus grâce à la compilation en utilisant javac). C'est indispensable.

La deuxième lance l'exécution. Le flag cp veut dire classpath (comme ça on dit explicitement à java où se trouvent nos .class). La valeur "%cd%" c'est le chemin absolu jusqu'au Dossier LeDossierContenantVosClasses (je le mets entre "" parce que sinon la commande est mal interprétée).
Puis NomDeVotreClasse est le fichier .class contenant la fonction main statique.

Voilà j'espère que j'ai pu vous être utile ou que ça pourra en aider d'autres.

Bonne journée à tous!

Dire « Merci » 10

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 70052 internautes nous ont dit merci ce mois-ci

Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
2455
7
Merci
Tu dis que tu compiles en invite de commande, donc tu es dans un dossier en particulier, or ce ne doit pas être n'importe où, mais dans le dossier où se trouve le fichier .class (celui qui est obtenu après la compilation). Tu devrais donc avoir :

cd C:\...\workspace\
javac HelloImad.java
java HelloImad
bilach
Messages postés
4
Date d'inscription
vendredi 23 mars 2012
Statut
Membre
Dernière intervention
23 mars 2012
2 -
Merci grâce vous j'ai trouver la solution.
merci beaucoup
Messages postés
2
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
30 novembre 2014
3
3
Merci
Bonjour Je Pense savoir la provenance du problème !!

En fait Pour ceux qui code sous un IDE comme Netbeans ou autre le fait de faire Javac sur la classe et le java font que ça ne compile pas.

Mais si tu change le fichier.java de dossier a un autre endroit fait que ça compile comme ça le devrait

C'est l'IDE qui fait que ça ne compile pas !
KX
Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
2455 -
Bonjour,

D'une part cette discussion est résolue depuis plus de 2 ans et demi, d'autre part il n'était nul part question d'IDE mais d'invite de commandes...
Ghaffe
Messages postés
2
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
30 novembre 2014
3 -
je viens d'avoir le même problème et c'est l'IDE qui faisait que après le javac sur la classe , la commande java ne marchait pas
2 ans aprés ça a pu etre utile et je pense qu'il y a des gens qui ont toujours ce problème donc cette discution n'est pas résolu.
KX
Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
2455 > fff -
"cette discution n'est pas résolu"
La discussion est résolue depuis le 23 mars 2012 à 21:40, lorsque bilach a trouvé la solution à son problème...

"il y a des gens qui ont toujours ce problème"
On est ici dans un forum d'assistance, on aide les gens à résoudre leur problème, on ne peux pas les empêcher d'en avoir...
Messages postés
2
Date d'inscription
vendredi 24 avril 2015
Statut
Membre
Dernière intervention
24 avril 2015
3
3
Merci
Bonjour à tous,
Je suis vraiment heureux que ce sujet n'ai pas été clos trop rapidement ; à mon sens, la réponse juste est celle qui propose de supprimer la ligne package xxx au début du fichier à compiler.
Bonne continuation.
El Roigouny.
xserj
Messages postés
1
Date d'inscription
mardi 10 février 2015
Statut
Membre
Dernière intervention
18 avril 2016
-
salut
tout juste, la suppression de la ligne package xxx au début du fichier à compiler règle le probleme, mais crée un msg d'erreur dans eclipse
KX
Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
2455 -
Ce qu'il est important de comprendre c'est la relation entre la structure logique du code (package/nom de classe) et la structure physique des fichiers (et dossiers).

Le code suivant doit obligatoirement être dans un fichier "C.java" dans un dossier "a" et sous dossier "b"
package a.b;
public class C {}

Il doit ensuite être utilisé comme ceci :

Compilation : javac a/b/C.java
Exécution : java a.b.C
1
Merci
Moi j'ai résolu ce même problème en corrigeant mes variables d'environnement ie CLASSPATH et Path. Essai peut être que ton problème vient de là
j'ai le même problème et j'ai essayé les deux solutions mais en vin
AchilloDTFA
Messages postés
4
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
24 mars 2014
-
qu'est ce que je doit corrigé dans le classpath ou le path?
je suis dans le bon dossier, la commande la compilation n'a pas de problème mais l'exécution pose le problème signaler.
Donc mon problème n'est pas le dossier que peut-il être?
wilkoya
Messages postés
1
Date d'inscription
jeudi 15 mai 2014
Statut
Membre
Dernière intervention
15 mai 2014
-
J'ai le même problème que toi @AchilloDTFA, bon dossier, compilation parfaite, mais problème identique à l'exécution. As tu trouvé la solution?
Au niveau des variables d'environnements, tu dois avoir ceci:
JAVA_HOME=path_de_la_jdk
PATH=%JAVA_HOME%\bin

Pour exécuter la classe au prompt , deux possibilités :

1) tu te positionne dans le même répertoire que la classe qui a été compilé

2) Sinon, si tu veux exécuter le programme peut importe l'endroit (peut importe le répertoire) ou tu fais l'appel, tu dois faire en sorte que la JVM voit la classe. Pour ce faire, tu dois assigner à la variable CLASSPATH le répertoire contenant la classe.

supposons que ta classe est dans le répertoire c:\demo\Demo.java
supossons que tu es situé dans le répertoire c:\

donc

2.1) tu compiles => javac c:\demo\Demo.java
2.2) tu assigne la variable CLASSPATH => set CLASSPATH=c:\demo
2.3) tu exécute => java Demo
Messages postés
1
Date d'inscription
vendredi 27 février 2015
Statut
Membre
Dernière intervention
27 février 2015
4
1
Merci
il vous faut sans doute retirer la ligne "package XXX;" au début du fichier java.
C'est exactement cela c'est la ligne package XXX qui pose problème à mon niveau je ne saurais pas dire pourquoi mais en tout cas une fois dans le package par defaut ça fonctionne.
0
Merci
Dans le répertoire du fichier HelloImad.class

java HelloImad

et non
java HelloImad.class


(Je poste car référencé en tête de Google.)
0
Merci
bonjour

il suffit de mettre: java nom_fichier

sans faire l'extension class au nom du fichier:

exemple: javac tp1.java

ceci génère le fichier tp1.class

après on met: java tp1

tout court
Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
2455
-1
Merci
Est-ce que la classe est publique et possède une méthode main ?
bilach
Messages postés
4
Date d'inscription
vendredi 23 mars 2012
Statut
Membre
Dernière intervention
23 mars 2012
2 -
puisque je viens de commencer je ne sais pas vraiment si oui ou non mais voila mon tout petit premier programme (code source):


public class HelloImad {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
System.out.println("Hello World !");
i++;
}
}
}
KX
Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
2455 -
Tu ne dois pas être dans le bon dossier alors.
Il faut que tu sois dans le dossier où est le fichier HelloImad.class
bilach
Messages postés
4
Date d'inscription
vendredi 23 mars 2012
Statut
Membre
Dernière intervention
23 mars 2012
2 -
j'ai pas très bien compris votre réponse parce que meme quand j'ai fais glisser la classe créer dans l'invite commande le message d'erreur est le meme !!