La configuration de java et de classpath java_home correctement dans Ubuntu
J'obtiens l'erreur
Exception in thread "main" java.lang.NoClassDefFoundError:
Lorsque j'essaie d'exécuter une classe compilée sur Ubuntu. Je suis à l'aide d'un très simple exemple Helloworld, et les millions de réponses qui existent déjà sur internet suggèrent que mon CLASSPATH et JAVA_HOME variables ont été définies de manière incorrecte.
Cependant, j'ai édité le etc/environnement sur les dossiers appropriés ainsi que le dossier en cours:
PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun/"
CLASSPATH=".:/usr/lib/jvm/java-1.5.0-sun/lib"
et ils apparaissent lorsque je tape la commande set. Dans tous les cas, même lorsque j'ai mis le classpath manuellement à l'aide de
sudo java -cp . myfirstjavaprog.class
Je reçois la même erreur. Où dois-je chercher? Ce doit être un problème de configuration.
Merci beaucoup
OriginalL'auteur Huguenot | 2009-12-29
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez laisser tomber de la .classe à partir de la fin. Tapez simplement...
Il arrive aux meilleurs d'entre nous.
OriginalL'auteur Pace
Je recommande fortement de se débarrasser de la variable d'environnement CLASSPATH, ou au moins de prendre votre JRE/JDK.
"."
est implicitement dans le classpath, sauf indication contraire. Et depuis environ Java 1.3, Java a été assez intelligent pour trouver sa propre exécution et les bibliothèques basées sur le chemin d'exécution de la javac/java les fichiers exécutables. Depuis lors, il est devenu redondant, voire carrément mauvais, à spécifier ceux sur le chemin de la classe. Certainement.../lib
est incorrect, car il y a seulement des pots de là, pas de classes, et ceux qui ne sont pas ramassé le classpath si elles ne sont pas individuellement et explicitement nommé.Moderne javas sont assez intelligents que vous pouvez simplement taper
java <classname>
quand on est dans le répertoire racine du classpath, et le tout fonctionne™.Oh... à noter que Windows navires par défaut avec un mal paralysé Java, avec exécutables assis dans le système de Windows classpath. S'il vous plaît "java -version" à partir d'une invite de commandes DOS et de voir si la version de Java que vous utilisez la version que vous voulez!
la même chose peut être dit de Ubuntu; car il est livré avec la GNU java, (au moins le couple de systèmes Ubuntu que j'ai vu), pas de java de Sun. 'k, il n'est pas "gravement mutilés" - mais ce n'est pas java de Sun.
je suis upvoting b/c il n'y a pas beaucoup de choses à propos de "paramètre CLASSPATH java" sur google. j'étais sous l'impression erronée que vous avez besoin pour configurer le CLASSPATH encore... mais je me trompais.
qu'en est JAVA_HOME... avez-vous encore besoin de la configuration de la variable de chemin d'accès?
OriginalL'auteur Carl Smotricz
On mélange les pommes et les oranges.
Un raw ou java javac invocation sur la ligne de commande a besoin d'un chemin de classe pour savoir où il peut accéder à ses classes. Lorsque vous exécutez
vous donnez java la liste des endroits pour trouver des exécutables classes. Il ne va pas chercher ailleurs, notamment les ".", sauf si vous lui dites. Donc "CLASSPATH" ne vous aide pas, sauf si vous exécutez
Inotherwords, c'est juste un raccourci pour garder d'avoir à retaper le chemin de la classe.
De nombreux programmes sont configurés pour utiliser JAVA_HOME, mais en fin de compte l'exécution des programmes java juste besoin d'un configuré classpath et le chemin d'accès de java (ils trouvent qu'il est par le biais de la variable JAVA_HOME, si vous avez encore besoin pour des choses comme la fourmi, mais son " toujours conceptuellement juste un raccourci).
votre CHEMIN est le chemin d'accès où le système recherche pour les fichiers binaires. Si java n'est pas sur votre chemin (de type "java", il va vous montrer ce qui, le cas échéant, java est sur votre chemin) en cours d'exécution /full/chemin/vers/java est identique à courir juste "java" et avoir le système de trouver le binaire dans la variable PATH.
OriginalL'auteur Steve B.
Non, je pense que c'est cette classe les variables d'environnement sont ignorés.
La bonne façon de le faire est d'utiliser l'option-classpath option lorsque vous compilez et exécutez. Définir pour chaque projet. La preuve que vous avez devant vos yeux vous dit qu'il est.
Pourquoi est-CLASSPATH ignoré? Plusieurs raisons:
Pourquoi les variables d'environnement classpath ignoré?
mal. Il va falloir apprendre à le faire d'une manière qui est appropriée pour de futurs projets, qui ne sont pas susceptibles d'être compilé et exécuté sur la ligne de commande.
Cette réponse, c'est comme de l'or. Toutefois - DOS les gens sont vissés. De 255 caractères lignes de commande. Merci encore, le projet de Loi!
Le point est que personne utilise des interfaces de commande pour compiler ou exécuter quelque chose de valable une fois passé "Hello, World" et des tutoriels. Il n'est pas près de le problème que vous mentez. De bureau aux applications d'utiliser des scripts et de la Fourmi, déployé des applications utilisent les conventions intégrées. Si c'était une grosse affaire, Java serait mort il ya des années.
OriginalL'auteur duffymo
Utilisation
Il définit un lot de classpath choses.
OriginalL'auteur haasdas
pour le réglage de la variable java_home, voici les instructions.
http://luckydev07.blogspot.com/2009/08/setting-javahome-in-ubuntu-linux.html
et
classpath peut être définie de la même façon
Le lien n'est pas plus de travail.. pensez à mettre à jour..
OriginalL'auteur Anand
Je vous recommandons fortement de passer quelques temps à la recherche sur le Soleil tutoriel. Il vous aidera plus tard - classe chemins sont connus des fauteurs de trouble.
http://java.sun.com/docs/books/tutorial/getStarted/TOC.html
OriginalL'auteur Thorbjørn Ravn Andersen
Ok je cherchais le problème dans le mauvais endroit. Il s'est avéré que Java était bien et j'ai été la victime d'obtenir la même erreur pour les deux problèmes séparés.
J'ai été à l'origine d'essayer d'exécuter un swing exemple que j'ai obtenu à partir du site web de Java, mais je n'avais pas remarqué qu'il avait un fichier de définition de package. J'ai mis en place la structure de dossier correct et maintenant il fonctionne très bien.
Quand j'ai essayé d'exécuter un HelloWorld exemple, j'avais accidentellement inclus la .extension de classe.
Ces deux problèmes m'a donné ClassNotFound erreurs.
Merci beaucoup pour votre aide.
OriginalL'auteur Huguenot