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

ANT Java Discussion :

un Probleme NoClassDefFoundError


Sujet :

ANT Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Par défaut un Probleme NoClassDefFoundError
    Bonjour à tous,

    Je créé un projet qui lis dans un fichier excel, pour cela j'utilise la librairie jxl.jar, et ant pour automatiser mes tâches.

    Mon probleme intervient toujours au meme endroit, au moment de l'exécution du code sur <java>.

    Peut etre est il utile que je vous mette l'arbo de mon projet :
    ETL
    |- class
    |- lib
    |-- jxl.jar
    |- src
    |-- intput.xls
    |- build.xml

    j'utilise le JDK 1.6 et la derniere version de ant télécharger sur le site

    mon fichier build.xml

    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
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="monProjet" basedir=".">
     
    	<property name="jar" location="lib" />
     
    	<target name="delete" >
    		<delete dir="build" />
    	</target>
     
    	<!-- compilation -->
    	<target name="compile" >
     
    		<mkdir dir="build/classes" />
    		<!-- compilation des sources Java -->
    		<javac classpath="./lib/jxl.jar" srcdir="class" destdir="build/classes" />
    	</target>
     
    	<!-- creation du jar -->
    	<target name="jar" >
    		<mkdir dir="build/jar" />
     
            <jar destfile="build/jar/myJexcelAPI.jar" basedir="build/classes">
                <manifest>
                    <attribute name="Main-Class" value="Main"/>
                </manifest>
            </jar>
        </target>
     
    	<!-- exécution du code compilé -->
    	<target name="run" >
    		<java jar="build/jar/myJexcelAPI.jar" fork="true"/>
    	</target>
     
    </project>
    j'exécute mes commandes par MS DOS (je pense avoir bien configurer mes variables environnement), voici le résultat de l'exécution des mes tâches :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    C:\Documents and Settings\ZGYK6628\workspace\ETLJava>ant compile
    Buildfile: build.xml
     
    compile:
        [mkdir] Created dir: C:\Documents and Settings\ZGYK6628\workspace\ETLJava\build\classes
        [javac] Compiling 3 source files to C:\Documents and Settings\ZGYK6628\workspace\ETLJava\build\classes
     
    BUILD SUCCESSFUL
    Total time: 0 seconds
    C:\Documents and Settings\ZGYK6628\workspace\ETLJava>ant jar
    Buildfile: build.xml
     
    jar:
        [mkdir] Created dir: C:\Documents and Settings\ZGYK6628\workspace\ETLJava\build\jar
          [jar] Building jar: C:\Documents and Settings\ZGYK6628\workspace\ETLJava\build\jar\myJexcelAPI.jar
     
    BUILD SUCCESSFUL
    Total time: 0 seconds
    C:\Documents and Settings\ZGYK6628\workspace\ETLJava>ant run
    Buildfile: build.xml
     
    run:
         [java] java.lang.NoClassDefFoundError: jxl/read/biff/BiffException
         [java] Caused by: java.lang.ClassNotFoundException: jxl.read.biff.BiffException
         [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
         [java]     at java.security.AccessController.doPrivileged(Native Method)
         [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
         [java]     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         [java] Could not find the main class: Main. Program will exit.
         [java] Exception in thread "main"
         [java] Java Result: 1
     
    BUILD SUCCESSFUL
    Total time: 0 seconds

  2. #2
    Membre éclairé Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Par défaut
    Je viens d'analyser mon .jar qui est généré, et il comporte les fichiers suivant :

    |- META-INF
    |- Main.class
    |- LireXLS.class
    |- ErireXLS.class

    En faite, le problème viendrait du faite que le .jar ne comporte pas ma libraire jxl.jar, et par la meme occasion le fichier excel que j'utilise dans mes classes.

    Si qq1 pouvait m'éclaircir !?

  3. #3
    Invité de passage
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Par défaut
    J'ai exactement le même problème, sauf que j'inclus bien mes jars externe dans le jar avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <jar ...>
        		<fileset dir=".">
        			<include name="${lib.dir}/*.jar"/>
        		</fileset>
        		<manifest>
                    <attribute name="Main-Class" value="${main-ftserver}"/>
                </manifest>
            </jar>
    et que je ne cherche pas à lire un fichier externe.

    Mais quand j'exécute mon jar, j'ai le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ java -jar build/jar/puzzle-ftserver.jar 0 10 10
    Exception in thread "main" java.lang.NoClassDefFoundError: framework/PID
    	at remote.server.Server.<init>(Unknown Source)
    	at remote.server.Server.main(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: framework.PID
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    	... 2 more
    Comment faire pour que java prenne en compte les jars dans le jar ?

    Merci d'avance.

  4. #4
    Membre éclairé Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Par défaut
    En faite il y avait quelques petites erreurs dans mon fichier build, que j'ai réussi à faire fonctionner désormais.

    Pour la génération du .jar, qui utilise des jar externes, voici une syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <target name="jar">
            <mkdir dir="build/jar"/>
            <jar destfile="build/jar/le_jar_a_généré.jar" basedir="build/classes">
                <manifest>
                    <attribute name="Main-Class" value="Main"/>
    		<attribute name="Class-Path" value="le_jar_dépendant.jar" />
                </manifest>
            </jar>
        </target>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme du classique java.lang.NoClassDefFoundError
    Par dany_dane dans le forum Général Java
    Réponses: 4
    Dernier message: 29/12/2009, 17h20
  2. Problem in thread "Thread-2" noClassDefFoundError
    Par LeDoc dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 28/04/2009, 11h41
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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