J'essaie d'exécuter une application Java, mais j'obtiens cette erreur:
java.lang.ClassNotFoundException:
Après les deux-points vient l'emplacement de la classe qui manque. Cependant, je sais que cet emplacement n'existe pas puisque la classe est située ailleurs. Comment puis-je mettre à jour le chemin de cette classe? Cela a-t-il quelque chose à voir avec le chemin des classes?
java
class
classpath
classnotfoundexception
user2426316
la source
la source
Réponses:
Votre classpath est cassé (ce qui est un problème très courant dans le monde Java).
Selon la façon dont vous démarrez votre application, vous devez réviser l'argument de
-cp
, votre entrée Class-Path dans MANIFEST.MF ou votre disposition de disque.la source
Un classpath est une liste d'emplacements à partir desquels charger les classes.
Ces «emplacements» peuvent être des répertoires ou des fichiers jar.
Pour les répertoires, la JVM suivra un modèle attendu pour le chargement d'une classe. Si j'ai le répertoire C: / myproject / classes dans mon chemin de classe, et que j'essaye de charger une classe com.mycompany.Foo , il cherchera sous le répertoire des classes un répertoire appelé com , puis sous celui-ci un répertoire appelé mycompany , et enfin, il cherchera un fichier appelé Foo.class dans ce répertoire.
Dans le second cas, pour les fichiers jar, il recherchera le fichier jar pour cette classe. Un fichier jar n'est en réalité qu'une collection compressée de répertoires comme ci-dessus. Si vous décompressez un fichier jar, vous obtiendrez un tas de répertoires et de fichiers de classe suivant le modèle ci-dessus.
Ainsi, la machine virtuelle Java parcourt un chemin de classe du début à la fin à la recherche de la définition de la classe lorsqu'elle tente de charger la définition de classe. Par exemple, dans le classpath:
C: / monprojet / classes; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
La JVM essaiera d'abord de chercher dans les classes du répertoire , puis dans stuff.jar et enfin dans otherstuff.jar .
Lorsque vous obtenez une ClassNotFoundException, cela signifie que la machine virtuelle Java a parcouru tout le chemin de classe et n'a pas trouvé la classe que vous avez tenté de référencer. La solution, comme souvent dans le monde Java, est de vérifier votre chemin de classe.
Vous définissez un chemin de classe sur la ligne de commande en disant java -cp puis votre chemin de classe. Dans un IDE tel qu'Eclipse, vous aurez une option de menu pour spécifier votre chemin de classe.
la source
C'est la meilleure solution que j'ai trouvée jusqu'à présent.
Supposons que nous ayons un package appelé
org.mypackage
contenant les classes:et les fichiers définissant ce package sont stockés physiquement sous le répertoire
D:\myprogram
(sous Windows) ou/home/user/myprogram
(sous Linux).La structure du fichier ressemblera à ceci:
Lorsque nous invoquons Java, nous précisons le nom de l'application à exécuter:
org.mypackage.HelloWorld
. Cependant, nous devons également indiquer à Java où chercher les fichiers et répertoires définissant notre package. Donc, pour lancer le programme, nous devons utiliser la commande suivante:la source
Si vous connaissez le chemin de la classe ou le fichier jar contenant la classe, ajoutez-le à votre chemin de classe lors de son exécution. Vous pouvez utiliser le classpath comme mentionné ici:
sous Windows
sous UNIX / Linux
la source
Essayez-les si vous utilisez maven. J'utilise maven pour mon projet et quand je fais
mvn clean install
et essaie d'exécuter un programme, il lève l'exception. Donc, je nettoie le projet et le relance et cela fonctionne pour moi.J'utilise eclipse IDE.
Pour l'exception de classe introuvable lors de l'exécution du test Junit, essayez de l'exécuter
mvn clean test
une fois. Il compilera toutes les classes de test.la source
Pour ajouter l'emplacement d'une classe à votre chemin de classe via la ligne de commande, ajoutez simplement
-cp
ou-classpath
et l'emplacement de la classe lors de son exécution. C'EST À DIREOu si vous exécutez un IDE tel qu'eclipse, vous pouvez cliquer avec le bouton droit sur
project -> build path -> configure build path
et ajouter le JAR externe contenant votre classe au chemin de construction, cela devrait fonctionner correctement.la source
Utilisation ';' comme séparateur. Si vos variables d'environnement sont définies correctement, vous devriez voir vos paramètres. Si votre PATH et CLASSPATH sont corrects, Windows devrait reconnaître ces commandes. Vous n'avez PAS besoin de redémarrer votre ordinateur lors de l'installation de Java.
la source
Ajoutez le chemin complet du fichier jar au CLASSPATH. Sous Linux, utilisez:
export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Une autre façon de travailler (sans modifier le CLASSPATH) consistait à décompresser le fichier jar dans le dossier du projet actuel.Les moyens n'ont pas fonctionné pour moi:
1) Utilisation de l'
-cp
option avec le chemin complet du fichier jar.2) Utilisation
-cp
uniquement avec le nom du pot lorsqu'il se trouve dans le dossier actuel3) Copie du pot dans le dossier du projet actuel
4) Copie du fichier jar à l'emplacement standard des fichiers java (/ usr / share / java)
Cette solution est rapportée pour la classe com.mysql.jdbc.Driver dans mysql-connector-java.5 - *. Jar, fonctionnant sous linux avec OpenJDK version 1.7
la source
Montez en haut et supprimez l'instruction d'importation s'il y en a une, puis réimportez la classe. Mais si ce n'est pas le cas, nettoyez puis construisez. Utilisez-vous Netbeans ou Eclipse?
la source
J'ai rencontré cela aussi et j'ai essayé toutes les autres solutions. Je n'avais pas le fichier .class dans mon dossier HTML, je n'avais que le fichier .java. Une fois que j'ai ajouté le fichier .class, le programme a bien fonctionné.
la source
Cela peut arriver si votre chemin de classe n'est pas correct
Posons une classe sérialisable et une classe désérialisable sous le même nom de projet. Vous exécutez la classe sérialisable, créant un objet sérialisable dans un dossier spécifique. Vous avez maintenant besoin des données désaréalisées. En attendant, si vous modifiez le nom du projet, cela ne fonctionnera pas. Vous devez d'abord exécuter la classe sérialisable, puis désérialiser le fichier.
la source
Si vous utilisez maven, essayez de maven mettre à jour tous les projets et forcer les instantanés. Il nettoiera également et reconstruira tous les classpath .. Cela a résolu mon problème.
la source
je viens de faire
1. invalider les caches et redémarrer
2. J'ai reconstruit mon projet qui a résolu le problème
la source
J'essayais d'exécuter .jar à partir du code C # en utilisant la
Process
classe. Le code java s'est exécuté avec succès depuis eclipse, mais pas depuis C # visual studio et même en cliquant directement sur le fichier jar, il s'est toujours arrêté avecClassNotFoundException:
exception. La solution pour moi, a été d'exporter le programme java en tant que "Fichier JAR exécutable" au lieu de "Fichier JAR". J'espère que cela peut aider quelqu'un.la source
Cela peut se produire sous Windows après une mise à jour java où l'ancienne version du SDK java est manquante et une nouvelle est présente. Je vérifierais si votre IDE utilise la version du SDK java installée (IntelliJ: CTRL + SHIFT + ALT + S)
la source
Si vous avez ajouté plusieurs bibliothèques (tierces) ** et une classe d' application Extends **
Cela pourrait alors arriver.
Pour cela, vous devez définir
multiDexEnabled true
et remplacer votreApplication
classe étendue parMultiDexApplication
.Il sera résolu.
la source
Question générique de base - Réponse générique la plus simple;)
Compte tenu des informations, je supposerai que vous essayez peut-être une approche basique du codage, de la construction / compilation et de l'exécution d'une application console simple comme "Hello World", en utilisant un simple éditeur de texte et un certain Command Shell.
Cette erreur se produit dans le scénario de mise en jachère:
En d'autres termes, utilisez:
PS L'ajout de l'extension de fichier .class produit la même erreur. Assurez-vous également d'avoir le dossier bin de Java (JDK / JRE) dans le PATH des variables d'environnement du système d'exploitation. (Recherchez plus de détails sur d'autres articles à ce sujet)
la source
Si vous utilisez maven, vérifiez que vous avez ce plugin dans votre
pom.xml
:Cela mettra votre dépendance (la raison de l'exception) dans votre fichier jar.
FYI : cela inclura toutes les dépendances gonflées dans le pot final
la source
Dans mon cas, la classe lancée en tant qu'exception de classe non trouvée a des propriétés liées aux certificats SSL. Fermez l'éclipse et ouvrez en tant que «Exécuter en tant qu'administrateur», puis le problème a été résolu. Comme eclipse a une autorisation liée à un problème, elle lèvera ce type d'exception.
la source
Mettez tout le code dans le bloc try puis attrapez l'exception dans un bloc catch
la source