Le programme suivant génère une erreur:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
CLASSPATH C:\Program Files\Java\jdk1.6.0_18\bin\
Path C:\Program Files\Java\jdk1.6.0_18\bin\
JAVAHOME C:\Program Files\Java\jdk1.6.0_18\bin
Pouvez-vous s'il vous plaît me dire la cause racine?
J'ai trouvé une autre raison commune. Si vous créez le fichier Java dans un paquet utilisant IDE comme Eclipse, vous trouverez le nom du paquet en haut de votre Java fichier du type "package pkgName". Si vous essayez d'exécuter ce fichier à partir de la commande Invite, vous obtiendrez l'erreur NoClassDefFoundError. Supprimez le nom du package du fichier Java) et utilisez les commandes qu'il contient ". l'invite de commande a gaspillé 3 heures pour cela - Abhi
Exception in thread "main" Java.lang.NoClassDefFoundError
Un des emplacements Java essaie de trouver votre fichier .class
Est votre répertoire actuel. Donc, si votre fichier .class
Est dans C:\Java
, Vous devrait changer votre répertoire actuel à cela.
Pour changer votre répertoire, tapez la commande suivante à l'invite et appuyez sur Entrée:
cd c:\Java
Ce .
Indique à Java que votre chemin d'accès aux classes est votre répertoire local.
Executing your program using this command should correct the problem:
Java -classpath . HelloWorld
Si votre paquet est helloworld
, vous iriez dans le répertoire parent de votre paquet puis exécutez:
Java helloworld.HelloWorld
Exécutez-le comme ceci:
Java -jar HelloWorld.jar
C’est la forme longue des commandes Java qui peuvent être exécutées à partir d’une invite de commande Windows:
"C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" -classpath "C:\Users\Scott\workspace\myproject" com\mycompany\myapp\HelloWorld.Java
"C:\Program Files\Java\jdk1.6.0_18\bin\Java.exe" -classpath "C:\Users\Scott\workspace\myproject" com.mycompany.myapp.HelloWorld
Notez que le classpath n'a pas de barre oblique à la fin. Les commandes javac.exe attendent que le fichier se termine par ".Java". La commande Java.exe attend le nom complet de la classe et ne se termine pas par ".class".
Il y a plusieurs façons de simplifier ces commandes:
Vous n'êtes pas obligé d'entrer le classpath entier (vous pouvez simplement utiliser -classpath "."). Entrez le répertoire dans lequel vous travaillerez:
cd "C:\Utilisateurs\Scott\Espace de travail\Mon projet \"
Vous pouvez utiliser le package par défaut (placez le répertoire du fichier HelloWorld.Java dans votre répertoire de travail et n'utilisez pas la directive Java)
Si vous apportez ces modifications, vous exécuterez quelque chose comme ceci (et vous pourrez peut-être laisser out -classpath "."):
cd "C:\Users\Scott\workspace\myproject\"
javac -classpath "." HelloWorld.Java
java -classpath "." HelloWorld
Voici ce qui a finalement fonctionné.
`@echo off
set path=%path%;C:\Program Files\Java\jdk1.7.0_71\bin;
set classpath=C:\Program Files\Java\jdk1.7.0_71\lib;
cd <packageDirectoryName>
javac .\trainingPackage\HelloWorld.Java
cd ..
Java trainingPackage.HelloWorld
REM (Make sure you are on the parent directory of the PackageName and not inside the Packagedirectory when executing Java).`
Le javadoc de NoClassDefFounError lui-même serait un bon début ( here) , puis je vous suggérerai de nettoyer et de reconstruire votre projet.
J'ai eu le même problème et suis tombé sur une solution avec 'Build Main Project F11'. L'ide a présenté une "option" que je pourrais désélectionner "Compiler à l'enregistrement" dans la partie Construction> Compilation de la boîte de dialogue de configuration du projet. Décocher 'Complile on Save', puis faire comme d'habitude (pour moi) 'Nettoyer et construire' a fait l'affaire pour moi.
tapez ce qui suit dans l'invite cmd, dans votre dossier:
set classpath=%classpath%;.;
package com.beans;
public class Flower{
.......
}
packages :=> com.beans,
Java class Name:=> Flower.Java,
Folder structure (assuming):=> C:\com\beans\Flower.*(both .Java/.class exist here)
alors il y a deux façons de l'exécuter:
1. Goto top Folder (here its C:\>),
then : C:> Java com.beans.Flower
2. Executing from innermost folder "beans" here (C:\com\beans:>),
then: C:\com\beans:> Java -cp ./../.. com.beans.Flower
Avait le même problème essayé ci-dessus des solutions mais aucune n'a fonctionné. Je devais passer par mon Java seulement pour constater que la fonction principale ne pouvait pas être reconnue car il n'y avait pas d'espace entre lui et (String), c'est-à-dire le code initial:
public static void main(String[]args){
code de travail.
public static void main (String[]args){
J'espère que j'ai aidé quelqu'un.
Votre CLASSPATH
doit également connaître l'emplacement de votre classe HelloWorld
.
En termes simples, vous devriez ajouter le point .
(signifie répertoire courant) dans les commandes CLASSPATH
si vous exécutez les commandes javac
et Java
à partir de l’invite du DOS.
La variable CLASSPATH
doit inclure le répertoire dans lequel se trouve votre fichier .class Java). Vous pouvez inclure '.' Dans CLASSPATH
pour indiquer que le répertoire en cours devrait être inclus.
set CLASSPATH=%CLASSPATH%;.
si votre Program.Java est dans le répertoire "src/mypkg/subpkg /":
aller à "src" dir
Ensuite, pour compiler, utilisez "javac mypkg/subpkg/Program.Java"
Pour exécuter, utilisez "Java mypkg.subpkg.Program.class"
Essayer de faire
javac Hello.Java
et ensuite, s'il ne présente aucune erreur de compilation (ce qui ne devrait pas être fait car je ne vois aucun bogue dans votre programme), tapez
Java Hello
Le problème ici est la configuration de l'environnement et l'exécution du fichier de classe. une. Pour définir le chemin de l'environnement, exécutez la commande suivante: set path = C:\Program Files (x86)\Java\jdk1.7.0\bin b. lancez le programme à partir du paquet tel que com.test.TestJavaClass
Commande: Java com.test.TestJavaClass
Le problème général ici est que nous l’exécutons à partir du paquet tel que src/package/name. Nous ne devrions pas inclure src, le nom du paquet suffit.
Solution simple et rapide: J'ai résolu ce problème (NetBeans) par exportation le projet original dans un fichier Zip, supprimer le répertoire du projet d'origine et importer le projet à partir du fichier Zip.
Si vous voulez "compiler et exécuter" tout fichier Java que vous avez créé à l'aide de n'importe quel IDE (comme Eclipse), exécutez simplement les commandes ci-dessous:
Compile:
javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.Java
Execute:
Java -classpath Users\dhiraj01\workspace\Practice\src\ PracticeLogic.Logics
J'ai eu cette erreur parce que mes fichiers étaient contenus dans un package. Donc, mon paquet foo je devais appeler comme:
Java foo.HelloWorld
J'ai passé quatre heures à essayer diverses permutations et suggestions de recherche.
Enfin, trouvé ce poste qui a fonctionné, mais pas la meilleure solution pour changer le code original pour le tester.
set classpath=JDKbin;JDKlib;JREbin;JRElib;myClassLib;.
Java <packageName>.<className>
A également essayé le Java ..\<packageName>.<className>
Ni travaillé.
Cependant, seule la première réponse a fonctionné. Merci beaucoup Abhi !!!
"J'ai trouvé une autre raison commune. Si vous créez le fichier Java dans un package en utilisant IDE comme Eclipse, vous trouverez le nom du package en haut de votre fichier Java tel que" package pkgName ". Si vous essayez d’exécuter ce fichier à partir de la commande Invite, vous obtiendrez l’erreur NoClassDefFoundError. Supprimez le nom du package du fichier Java et utilisez les commandes de la commande Invite. Gâché 3 heures pour cela. - Abhi "
Curieux de savoir s'il existe un autre moyen de le faire fonctionner sans avoir à changer le code d'origine? Je vous remercie!
J'ai finalement trouvé ceci comme un bug avec l'éditeur Apache Netbeans:
Les étapes ci-dessous vont supprimer l'erreur:
J'espère que cela vous aidera si vous utilisez le nouvel Apache Netbeans (pas l'ancien Netbeans)