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

Java Discussion :

compilation + classpath?


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 220
    Par défaut compilation + classpath?
    Bonjour,

    J'essaie de trouver la ligne de commande qui me permettra de compiler un projet eclipse en commande

    Voici la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -sourcepath src -classpath @classpath -d classes/ ./src/Main.java
    Voici pour lancer le pgr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sam@sam:~/Workspace/Java/TFE$ java classes.Main
    Voici le message d'erreur :

    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: classes/Main (wrong name: Main)
    	at java.lang.ClassLoader.defineClass1(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:632)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    	at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    	at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
    Could not find the main class: classes.Main. Program will exit.
    C'est surement avec le classpath, car quand je faisait un simple print sans inclure le classpath, cela fonctionnait.

    Une idée svp?

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    ce que te dis la trace c'est que ta classe s'appelle "Main" (pas bien d'avoir une classe sans package ) Or tu lui donnes le nom "classes.Main" : dans ton cas classes n'est pas le nom d'un package mais le nom d'un répertoire!
    Donc ton classpath doit contenir ton répertoire "classes" et ta classe s'appelle tout simplement "Main" ()

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 220
    Par défaut
    Bonjour,

    J'ai rajouté ma classe Main dans un package "main".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -sourcepath src -classpath @classpath -d classes/ ./src/main/Main.java
    contenu du fichier classpath:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    classes/:lib/audio/jl1.0.jar:lib/audio/mp3spi1.9.2.jar:lib/audio/tritonus_remaining.jar:lib/audio/tritonus_share.jar:lib/audio/vorbisspi1.0.1.jar:lib/freehep/freehep-base.jar:lib/freehep/freehep-graphics2d.jar:lib/freehep/freehep-graphicsio.jar:lib/image/clibwrapper_jiio.jar:lib/image/jai_imageio.jar:lib/image/jiu.jar:lib/image/mlibwrapper_jai.jar:lib/image/utilities.jar:lib/jlgui/jlgui2.3.jar:lib/jlgui/lib/basicplayer2.3.jar:lib/jlgui/lib/commons-logging-api.jar:lib/jlgui/lib/jogg-0.0.5.jar:lib/jlgui/lib/jorbis-0.0.12.jar:lib/jlgui/lib/jspeex0.9.3.jar:lib/pepite/dm-api.jar:lib/pepite/iclass.jar:lib/pepite/icons.jar:lib/pepite/ifilter.jar:lib/pepite/iviz.jar:lib/ifilter.jar:lib/yguard.jar:lib/config.properties:.
    ou j'ai rajouté classes

    lorsque je lance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sam@sam:~/Workspace/Java/TFE/classes$ java main.Main
    J'ai cette erreur-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Exception in thread "main" java.lang.NoClassDefFoundError: com/pepite/iClass/data/BinaryDBFactory
    	at main.Main.main(Main.java:28)
    Caused by: java.lang.ClassNotFoundException: com.pepite.iClass.data.BinaryDBFactory
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
    	... 1 more
    qui appartient à "lib/pepite/iclass.jar" et qui est contenu dans mon classpath :s

    Quelle est mon erreur svp?

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Le classpath doit aussi être indiqué a la JVM:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath @classpath main.Main

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 220
    Par défaut
    Ok pour spécifier le classpath, mais comment faire?

    Pour lancer main.Main, je dois lancer la commande à l'intérieur du répertoire "classes" alors que le fichier "classpath" se trouve dans le répertoire parent et contient les paths "relatifs".

    Comment faire cela proprement svp à partir des paths relatifs et non des paths absolu?

    Voici mon architecture à partir de la "racine" de mon projet :

    >classes
    - main
    - Main.class
    - autres packages
    >src
    - main
    - Main.Java
    - autres packages
    >lib // contenant mes *.jar

    Comment lancer Main.class à partir du répertoire "racine" ainsi je peux inclure le classpath à la jvm.

    Désolé je me perds...

Discussions similaires

  1. Question compilation / classpath
    Par kuroro20 dans le forum Général Java
    Réponses: 2
    Dernier message: 25/11/2008, 17h51
  2. Problème de compilation - classpath
    Par dr23fr dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 24/06/2008, 13h40
  3. Problème de compilation (classpath)
    Par thibane dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2008, 18h12
  4. probléme compilation avec classpath
    Par samuko dans le forum Langage
    Réponses: 4
    Dernier message: 15/05/2007, 12h16
  5. [compilation][classpath] problème de classpath
    Par mavina dans le forum Langage
    Réponses: 7
    Dernier message: 28/07/2006, 10h57

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