Je ne suis pas très expérimenté avec Java et cela me rend fou. J'ai écrit un programme Java FileManagement
et je dois l'exécuter depuis la ligne de commande.
Je peux le compiler depuis la ligne de commande avec javac FileManagement/*.Java
qui créera toutes les classes de ce dossier mais quand j'essaye Java FileManagement.Main
ça dit :
Exception dans le thread "principal" Java.lang.NoClassDefFoundError: FileManagement/Main
Le truc, c'est que j'ai essayé cette même procédure sur un ordinateur distant et ça marche bien. Il ne fonctionne pas sur le mien.
Si votre classe Main
est dans un package appelé FileManagement
, essayez:
Java -cp . FileManagement.Main
dans le dossier parent du dossier FileManagement
.
Si votre classe Main
n'est pas dans un package (le package par défaut), puis cd dans le dossier FileManagement
et essayez :
Java -cp . Main
Plus d'informations sur le CLASSPATH et comment le JRE trouve des classes:
Les gars, comprenons-en la syntaxe.
Si le fichier de classe est présent dans le répertoire actuel.
Java -cp. FileName
Si le fichier de classe est présent dans le répertoire. Accédez au répertoire parent et entrez ci-dessous cmd.
Java -cp. Dir1.dir2.dir3.fileName
S'il y a une dépendance sur des pots externes,
Java -cp.: ./ jarName1: ./ jarName2 fileName
J'espère que cela t'aides.
(Ceci est la réponse KISS.)
Disons que vous avez plusieurs fichiers .Java dans le répertoire courant:
$ ls -1 *.Java
javaFileName1.Java
javaFileName2.Java
Disons que chacun d'eux a une méthode main()
(donc ce sont des programmes, pas des bibliothèques), puis pour les compiler, faites:
javac *.Java -d .
Cela générera autant de sous-dossiers que de "packages" auxquels les fichiers .Java sont associés. Dans mon cas, tous les fichiers Java se trouvaient à l'intérieur sous le même nom de package packageName
, donc un seul dossier a été généré avec ce nom, donc pour exécuter chacun d'eux:
Java -cp . packageName.javaFileName1
Java -cp . packageName.javaFileName2
Quel est le nom du package de votre classe? S'il n'y a pas de nom de package, alors la solution est probablement:
Java -cp FileManagement Main