2017-09-05 1 views
0

J'essaye de faire fonctionner log4j2 dans Netbeans. Peu importe ce que je fais, je reçois les erreurs suivantesException dans le fil "principal" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager 
at java.lang.ClassLoader.defineClass1(Native Method) 

...

Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)14 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 

Je suis les instructions ici Setting up log4j2 et d'essayer d'exécuter le même programme de démonstration.

J'ai essayé de trouver la solution et trouvé cette publication.

Cet article Class not found est une copie exacte de mon problème, mais aucune réponse efficace n'a été publiée.

J'ai ajouté log4j-core-2.8.2.jar et log4j-1.2-api-2.8.2.jar aux bibliothèques du projet. Ces deux fichiers sont installés dans un sous-dossier du dossier src principal afin qu'ils soient sur le chemin d'accès aux classes.

Netbeans est installé sur une nouvelle version d'Ubuntu. Ce qui est frustrant, c'est que j'ai réussi à le faire tourner sur une machine Windows.

J'ai essayé de créer un nouveau projet avec seulement cette classe logdemo. J'ai ajouté les fichiers jar log4j2 à la bibliothèque. J'ai également ajouté la commande -Dlog4j.configurationFile=/home/test/config/log4j2.xml à la boîte Run> VM Options.

Je reçois toujours exactement le même message d'erreur.

J'ai vérifié mon installation.

[email protected]:~$ java -version 

java version "1.8.0_144" Java (TM) SE Runtime Environment (build 1.8.0_144-B01) Java HotSpot (TM) 64 bits serveur VM (build 25,144-B01, mode mixte) J'ai trouvé ce poste sur setting Java Environment in Ubuntu. J'aurais pensé qu'utiliser apt-get aurait créé l'environnement, mais j'ai peut-être tort.

J'ai vérifié/etc/environment. Aucune mention de Java là-bas. Aucun chemin Java exporté dans .bash.rc non plus. Aucun fichier Java dans/etc/profile.

Il semble y avoir un certain nombre d'endroits où le chemin peut être défini. J'ai trouvé cet article Setting PATH variables in Ubuntu. C'est moderne et utile. Je trouve également ce poste Setting Java path variables in Ubuntu

j'ajouté ce qui suit à mon profil de la maison ~/.profile

JAVA_HOME=/usr/lib/jvm/default-java 
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin 
export JAVA_HOME 
export PATH 

Note de l'utilisation par défaut-java. Ceci est un lien symbolique vers le JDK. J'espère que si/quand je passe à la prochaine version, apt-get changera le lien. Après un redémarrage d'Ubuntu pour voir si cela a résolu le problème, pas de changement.


Toutes les suggestions pour trouver la cause du problème seraient les bienvenues.

Répondre

0

J'ai installé Netbeans sur mon PC Windows 10 et j'avais toujours les mêmes symptômes, donc j'ai pensé que le problème devait être avec les fichiers jar.

J'ai trouvé la solution. J'utilisais log4j-core-2.8.2.jar et log4j-1.2-api-2.8.2.jar au lieu de log4j-api-2.3.jar et log4j-core-2.3.jar.

Pour une raison quelconque, la version 2.3 fonctionne et la version 2.8.2 ne fonctionne pas. Quand j'ai changé les fichiers jar, le programme compilé et exécuté sous Win 10 et Ubuntu sans erreur.

Je suis très ennuyé à ce sujet. J'apprends Java et j'aime la langue, mais j'ai passé beaucoup plus de temps à résoudre des problèmes qu'à écrire du code. Le programme de démonstration a compilé OK et a seulement jeté des erreurs lors de l'exécution. Les programmeurs expérimentés qui font de Stackoverflow une si grande ressource n'ont pas repéré le problème, et pourquoi le feraient-ils. Les messages d'erreur cryptiques ne donnaient aucun indice sur la cause profonde du problème. Cela ne devrait pas être si difficile. C'est très frustrant.