Erreur au moment de l'exécution de "java -jar bootstrap.jar"

Fermé
chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018 - Modifié le 21 juin 2017 à 11:24
chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018 - 27 juin 2017 à 13:41
Bonjour,

Dans le but de la création et de l'utilisation d'un ".War", j'ai suivi la procédure indiquée dans le lien suivant:"http://gardeux-vincent.eu/Documents/ProjetJEE/CSM_Jaxb_Stripes/installation_war.html".

J'ai essayé d'exécuter la ligne de commande " java -jar bootstrap.jar", mais j'obtiens l'erreur suivante:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/juli/loggi
ng/LogFactory
        at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more


Je dispose des outils suivant: eclipse-jee-luna-SR2, Java jdk1.8.0_121+jre1.8.0_121, et Tomcat8.

J'attire votre attention qu'au moment de l'exécution d'un simple programme java (Hello.java) j'ai aussi une erreur (Erreur : impossible de trouver ou charger la classe principale Hello). La compilation se fasse le plus normalement du monde mais ce n'est pas le cas pour l'exécution.

Je me demande s'il y a une relation entre les deux erreurs ou non!!

prière de me proposer vos réponses et remarques.

Merci.
A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
21 juin 2017 à 13:20
Bonjour,

Plusieurs choses :
  • NoClassDefFoundError: org/apache/juli/logging/LogFactory ça ressemble à un jar de dépendance manquante qu'il faudrait rajouter au war
  • impossible de trouver ou charger la classe principale Hello, c'est qu'il manque la méthode main et/ou la classe Hello, mais c'est bizarre d'avoir un main dans un war
  • la relation entre les deux, apriori il n'y en a pas, mais elles ont un point commun c'est que la configuration du projet (dépendance, point d'entrée...) est incorrecte, c'est assez fastidieux quand on le fait à la main
  • plus généralement, on ne devrait plus faire ces configurations à la main, Maven le fait beaucoup mieux, d'ailleurs si je reprends une de nos anciennes discussions par exemple celle-ci, les archetypes étaient configurés pour générer des war, donc créer et utiliser un war tu l'as déjà fait dans le cadre des tes questions précédentes...
0
chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018 4
21 juin 2017 à 13:53
Merci KX,

Concernant "NoClassDefFoundError: org/apache/juli/logging/LogFactory ça ressemble à un jar de dépendance manquante qu'il faudrait rajouter au war", où puis-je trouver le jar et comment le rajouter au War?

"...mais c'est bizarre d'avoir un main dans un war".
Peut être que j'ai mélangé un pti peux les choses :)
Il s'agit pas d'un main dans un war. Je parlais d'une manière générale lors du développement d'un programme Java quelconque, j'obtiens l'erreur mentionnée. Et concernant le programme en question (qui affiche le message "hello") il est très simple et je pense pas avoir fait une erreur:
public class Hello {

public static void main (String[] args) throws Exception {

	System.out.println ("hello");

	}
}


Concernant Maven: dois l'utiliser à chaque fois que je veux écrire un programme en java (même avec un simple programme tel que l'affichage de "hello")?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018
21 juin 2017 à 20:01
Pour "org/apache/juli/logging/LogFactory" il semble que cela soit lié à une vieille version de Tomcat qui nécessite d'ajouter explicitement tomcat-juli.jar, l'article dont tu suis la procédure travailles avec un Tomcat 6, il faudrait peut-être s'orienter vers une documentation plus récente pour Tomcat 8.5 ou 9.0

Concernant ton problème de main, cela peut se produire si tu n'es pas dans le bon répertoire au moment de lancer l'exécution, c'est à dire qu'il ne trouve pas le fichier .class à l'endroit où il l'attends, en ligne de commande tu devrais faire :
javac Hello.java
java Hello

Maven peut servir à toutes les étapes d'un projet Java, il est possible de l'utiliser aussi pour un simple affichage de Hello, car Maven ne s'intéresse pas vraiment au contenu du code ou sa quantité mais plutôt à tout ce qu'il y a autour : construction du jar (ou du war), gestion des dépendances (donc pas de problème avec des jar manquants), exécution du code (donc ton problème de main), et pas mal d'autre choses particulièrement intéressantes avec Java EE, comme le démarrage d'un serveur à la volée, ou la génération de code comme on a pu faire dans tes autres discussion...
Maven reste bien sûr optionnel, mais un certain nombre des problèmes que tu peux rencontrer n'aurait pas lieu avec Maven, en particulier parce que le pom.xml porte l'intégralité de la configuration du projet et que sans tu es obligé de tout faire à la main (au risque de te tromper...)
0
chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018 4 > KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024
22 juin 2017 à 10:44
Bonjour,

"Concernant ton problème de main, cela peut se produire si tu n'es pas dans le bon répertoire au moment de lancer l'exécution, ..."

Concernant ce point, je me positionne toujours dans le bon répertoire qui contienne le ".class" ainsi que le ".java". Donc pas de soucis pour ça.

En ce qui concerne Maven, j'avoue que je n'ai pas eu l'occasion de l'apprendre d'une manière approfondie. Pour le moment, tous ce que je sais faire c'est de créer un projet, en plus de quelques ligne de codes que tu m'a montré dans nos discussions précédentes. Je ne suis pas encore tombé sur un bon support qui explique en détail le principe de fonctionnement de Maven!!
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018
22 juin 2017 à 11:12
"je me positionne toujours dans le bon répertoire qui contienne le ".class" ainsi que le ".java""
Si tu as des package dans tes classes ça peut être faux, car il faut être à la racine du package parent.

Exemple :

package ccm.kx;

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

En travaillant dans le dossier C:/projet, le code est dans C:/projet/ccm/kx/Hello.java il faut alors faire les commandes dans C:/projet et pas dans C:/projet/ccm/kx même si c'est là que sont les fichiers .java et .class

En ligne de commandes :
C:/projet> javac ccm/kx/Hello.java
C:/projet> java ccm.kx.Hello

Quant à Maven il n'y a pas vraiment de documentation complète et exhaustive, il faut surtout comprendre que c'est un ensemble de plugins (écrits en Java) et chaque plugin a sa propre documentation et donc ses propres commandes.
Evidemment on commencera par "apprendre" le fonctionnement des plugins standards, publiés par Apache, et qui s'occupent de la compilation et des autres tâches de base.

http://maven.apache.org/guides/
0
chercheur2017 Messages postés 56 Date d'inscription mardi 18 avril 2017 Statut Membre Dernière intervention 16 décembre 2018 4 > KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024
22 juin 2017 à 12:28
Merci pour le dernier lien que tu m'a envoyé. Il me semble très intéressant et très riche.

je reviens sur mon problème d'exécution Java parce que ça m'énerve vraiment:

voici le code de la classe que j'ai écrit de A à Z (je n'ai mentionné aucun package!!)
public class Hello {

public static void main (String[] args) throws Exception {

	System.out.println ("bonjour");

	}
}


Je l'ai enregistré dans un répertoire que j'ai appelé "developpement" (C:\developpement).
donc mon ".java" se trouve dans ce répertoire.
je me positionne dans ce répertoire (C:\developpement>):
je compile avec "javac Hello.java" , pas d'erreur
j'exécute avec "java Hello" erreur!!!

pour une autre tentative, j'ai essayé de procéder de la nouvelle manière que tu viens de me montrer:
je me suis positionné dans le répertoire "C" (C:\>):
je compile avec " javac developpement/Hello.java" , pas d'erreur
j'exécute avec " java developpement.Hello" erreur!!!

(A moins que dans ce deuxième cas il faut rajouter encore un autre niveau hiérarchique et mettre le ".java" dans "C:\developpement\dev" par exemple!!
0