IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

[Débutant] mais où est cette main class ?


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut [Débutant] mais où est cette main class ?
    Bonjour à tous,

    Ca fait plus de deux jours que j'essaie de résoudre mon problème. Il semble simple mais je suis toujours bloqué malgré mes recherches. Alors je viens solliciter votre aide.

    J'exécute un jar (depuis un .bat) et j'ai l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/l
    gging/LogFactory
            at fbn.ESTDCreation.<clinit>(ESTDCreation.java:36)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFact
    ry
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            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
    Could not find the main class: fbn.ESTDCreation.  Program will exit.

    J'ai donc été voir dans mon manifest. La classe main qui s'appelle ESTDCreation est bien là (elle se trouve dans mon arborescence D:\[blabla]\workspace\monprojet\bin\fbn\ESTDCreation.class)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Manifest-Version: 1.0
    Class-Path: .
    Main-Class: fbn.ESTDCreation
     
    Name: org/exolab/castor
    Sealed: false
     
    Name: org.apache.log4j
    Implementation-Vendor: "Apache Software Foundation"
    Implementation-Title: log4j
    Implementation-Version: 1.2.15
    J'ai lu que ça pouvait être à cause du classpath, j'ai donc voulu exécuter la commande suivante sous DOS et j'ai la même erreur que plus haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\WINDOWS\system32>java -classpath "D:\blabla\workspace\monprojet\bin" fbn.jar
    Donc j'apprécierai énormément d'être au moins aiguillé, parce-que je commence à désespérer

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    L'erreur indique que c'est la classe org/apache/commons/lgging/LogFactory qu'il ne trouve pas.
    Il te faut donc mettre le jar qui la contient (commons-logging.jar ?) dans ton classpath:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -classpath "D:\blabla\workspace\monprojet\bin;<chemin_ver_la_lib>/commons-logging.jar"
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Le problème vient bien du classpath, mais pas de la classe ESTDCreation.

    Dans ton classpath, il te manque la librairie Apache "Commons Logging" qui est utilisée par ta classe ESTDCreation.

    Il faut lancer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath "D:\blabla\workspace\monprojet\bin;D:\...\commons-logging.jar" fbn.jar
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Fifan31 Voir le message
    L'erreur indique que c'est la classe org/apache/commons/lgging/LogFactory qu'il ne trouve pas.
    Il te faut donc mettre le jar qui la contient (commons-logging.jar ?) dans ton classpath:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -classpath "D:\blabla\workspace\monprojet\bin;<chemin_ver_la_lib>/commons-logging.jar"
    Merci pour cette rapide réponse !

    Mais j'avais bien ajouté tous mes jar dans mon classpath:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" path="src"/>
    	<classpathentry kind="src" path=".settings"/>
    	<classpathentry kind="src" path="lib"/>
    	<classpathentry kind="src" path="bin"/>
    	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    	<classpathentry exported="true" kind="lib" path="lib/apache-log4j-1.2.15/log4j-1.2.15.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-anttasks.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-codegen.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-core.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-ddlgen.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-jdo.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-xml-schema.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3-xml.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/castor-1.3.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/castor-1.3/jta1.0.1.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1-bin/commons-logging-1.1.1-javadoc.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1-bin/commons-logging-1.1.1-sources.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1-bin/commons-logging-1.1.1.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1-bin/commons-logging-adapters-1.1.1.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1-bin/commons-logging-api-1.1.1.jar"/>
    	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1-bin/commons-logging-tests.jar"/>
    	<classpathentry kind="output" path="bin"/>
    </classpath>

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anisse4 Voir le message
    Mais j'avais bien ajouté tous mes jar dans mon classpath:
    Euh... C'est quoi ce fichier XML ????



    Les librairies externes doivent être indiqué dans l'attribut Class-Path de ton manifest, (en chemin relatif par rapport à ton jar principal).

    a++

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Euh... C'est quoi ce fichier XML ????



    Les librairies externes doivent être indiqué dans l'attribut Class-Path de ton manifest, (en chemin relatif par rapport à ton jar principal).

    a++
    c'est le fichier .classpath qui se génère tout seul lorsque j'ajoute mes librairies depuis eclipse>Java Build Path> Add Jars

    Je vous ai fait une copie pour voir ce que j'avais comme jar uniquement

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Donc ca concerne eclipse et uniquement lui...


    Il faut voir comment tu génères ton jar, car ces librairies ne sont plus référencées (comme je l'ai dit elle devrait l'être dans le manifest).


    a++

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Donc ca concerne eclipse et uniquement lui...


    Il faut voir comment tu génères ton jar, car ces librairies ne sont plus référencées (comme je l'ai dit elle devrait l'être dans le manifest).


    a++
    Pour générer mon JAR je fais export sur mon projet >Jar File .
    Les options sélectionnées sont "Export generated class files and ressource" et "compress the content of the JAR file".
    Je sélectionne également bien le répertoire commons-logging-1.1.1-bin contenant les jar dont tu parles (en plus de toutes les autres ressources de mon projet).

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    • Les librairies externes ne doivent pas être contenu à l'intérieur du jar (à moins de passer par des classloader spécifique et non-standard).
    • Elles doivent être référencées dans l'attribut Class-Path du manifest.


    Maintenant si eclipse ne le fait pas automatiquement, tu devras le faire à la main...


    a++

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    • Les librairies externes ne doivent pas être contenu à l'intérieur du jar (à moins de passer par des classloader spécifique et non-standard).
    • Elles doivent être référencées dans l'attribut Class-Path du manifest.


    Maintenant si eclipse ne le fait pas automatiquement, tu devras le faire à la main...


    a++
    J'ai ajouté les lib des jar dans mon manifest mais du coup le jar ne se compile plus Est-ce la bonne syntaxe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Manifest-Version: 1.0
    Class-Path: .lib/apache-log4j-1.2.15/log4j-1.2.15.jar
    .lib/castor-1.3/castor-1.3-anttasks.jar
    .lib/castor-1.3/castor-1.3-codegen.jar
    .lib/castor-1.3/castor-1.3-core.jar
    .lib/castor-1.3/castor-1.3-ddlgen.jar
    .lib/castor-1.3/castor-1.3-jdo.jar
    .lib/castor-1.3/castor-1.3-xml-schema.jar
    .lib/castor-1.3/castor-1.3-xml.jar
    .lib/castor-1.3/castor-1.3.jar
    .lib/castor-1.3/jta1.0.1.jar
    .lib/commons-logging-1.1.1-bin/commons-logging-1.1.1-javadoc.jar         
    .lib/commons-logging-1.1.1-bin/commons-logging-1.1.1-sources.jar
    .lib/commons-logging-1.1.1-bin/commons-logging-1.1.1.jar
    .lib/commons-logging-1.1.1-bin/commons-logging-adapters-1.1.1.jar
    .lib/commons-logging-1.1.1-bin/commons-logging-api-1.1.1.jar
    .lib/commons-logging-1.1.1-bin/commons-logging-tests.jar          
    Main-Class: fbn.ESTDCreation
     
    Name: org/exolab/castor
    Sealed: false
     
    Name: org.apache.log4j
    Implementation-Vendor: "Apache Software Foundation"
    Implementation-Title: log4j
    Implementation-Version: 1.2.15

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    retire ces . devant lib

  12. #12
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    retire ces . devant lib
    J'avais testé avec et sans les . devant les lib, mais toujours une erreur:

    "Jar creation failed. Invalid header field"

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Il ne faut pas faire de retour à la ligne entre les différentes librairies, mais un simple espace...


    a+++

  14. #14
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Il ne faut pas faire de retour à la ligne entre les différentes librairies, mais un simple espace...


    a+++
    En effet je n'ai plus le message d'erreur du failed, mais j'en ai un autre:

    "line too long"

  15. #15
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par anisse4 Voir le message
    En effet je n'ai plus le message d'erreur du failed, mais j'en ai un autre:

    "line too long"
    j'ai mis uniquement les répertoires contenant les jar et ça passe.

    Par contre quand j'exécute le jar crée, toujours la même erreur....

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    il faut mettre les jar, pas uniquement leur répertoire. Maintenant, pour le line too long, faire un retour à la ligne, mais mettre à la fin de la lignre précédente le caractère \

  17. #17
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    il faut mettre les jar, pas uniquement leur répertoire. Maintenant, pour le line too long, faire un retour à la ligne, mais mettre à la fin de la lignre précédente le caractère \
    avec le caractère \ en fin de ligne avant retour chariot, je retombe sur le même message d'erreur de tout à l'heure:

    "invalid header field"

  18. #18
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par anisse4 Voir le message
    avec le caractère \ en fin de ligne avant retour chariot, je retombe sur le même message d'erreur de tout à l'heure:

    "invalid header field"
    J'ai trouvé la solution pour l'erreur d'export, il faut un espace lors d'un retour à la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Manifest-Version: 1.0
    Class-Path: lib.apache-log4j-1.2.15.log4j-1.2.15.jar
     lib.castor-1.3.castor-1.3-anttasks.jar
     lib.castor-1.3.castor-1.3-codegen.jar
     lib.castor-1.3.castor-1.3-core.jar
     lib.castor-1.3.castor-1.3-ddlgen.jar
     lib.castor-1.3.castor-1.3-jdo.jar
     lib.castor-1.3.castor-1.3-xml-schema.jar
     lib.castor-1.3.castor-1.3-xml.jar
     lib.castor-1.3.castor-1.3.jar
     lib.castor-1.3.jta1.0.1.jar
     lib.commons-logging-1.1.1-bin.commons-logging-1.1.1-javadoc.jar
     lib.commons-logging-1.1.1-bin.commons-logging-1.1.1-sources.jar
     lib.commons-logging-1.1.1-bin.commons-logging-1.1.1.jar
     lib.commons-logging-1.1.1-bin.commons-logging-adapters-1.1.1.jar
     lib.commons-logging-1.1.1-bin.commons-logging-api-1.1.1.jar
     lib.commons-logging-1.1.1-bin.commons-logging-tests.jar
    Bon par contre toujours la même erreur lors de l'execution du jar:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lo
    gging/LogFactory
            at fbn.ESTDCreation.<clinit>(ESTDCreation.java:36)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFacto
    ry
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            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
    Could not find the main class: fbn.ESTDCreation. Program will exit.

  19. #19
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    ce que je ne comprends pas c'est que je n'ai rien modifié, j'ai même repris mon workspace lorsque l'exécution fonctionnait. Mais même avec tout le code avant modification j'ai la même erreur....
    alors pour moi c'est une mauvaise manip d'eclipse ?....

  20. #20
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lib.castor-1.3.castor-1.3-xml-schema.jar
    Ca ne correspond pas au répertories que tu a mentionné plus tot. La valeur correct est, je pense,
    lib/castor-1.3/castor-1.3-xml-schema.jar

    pareil pour les autres.

Discussions similaires

  1. Mais quelle est cette table ?
    Par kirareuel dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 22/01/2014, 18h04
  2. Mais quelle est cette balise ? '<#'
    Par Ska_Dg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/04/2012, 10h24
  3. "resolves to a package" mais c'est une classe !
    Par Invité dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 18/04/2008, 11h50
  4. [VS 2005 Pro]Mais où est le designer de classes?
    Par khazna dans le forum Visual Studio
    Réponses: 2
    Dernier message: 26/02/2008, 08h38
  5. Réponses: 6
    Dernier message: 06/09/2006, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo