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

Langage Java Discussion :

Execution "java -cp somejar classname"


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 126
    Par défaut Execution "java -cp somejar classname"
    Bonjour, je ne comprends pas ce qui n'est pas bon dans la façon dont j'exécute une classe (sous windows XP):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>java -classpath ./ATest.jar:./JSAP-2.1.jar com.pkg.test.Atest
    Exception in thread "main" java.lang.NoClassDefFoundError: com/pkg/test/Atest
     
    C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>"c:\Program Files\Java\jdk1.5.0_13\bin\jar.exe" -tf Atest.jar
    META-INF/
    META-INF/MANIFEST.MF
    com/
    com/pkg/
    com/pkg/test/
    com/pkg/test/Atest.class
     
    C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>
    Je lui donne le jar ./Atest.jar qui contient bien la classe com.pkg.test.Atest !!! alors pourquoi ne la trouve-t-il pas ?

    Si j'essaie une exécution sur le jar....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>java -classpath ./JSAP-2.1.jar -jar Atest.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: com/martiansoftware/j
    sap/StringParser
     
    C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>
    il trouve donc la main class que j'ai défini dans le fichier manifest, par contre se foire sur le classpath puisqu'il ne trouve pas ./JSAP-2.1.jar qui se trouve pourtant bien dans le répertoire courant.

    Alors la troisième solution qui consiste à ne pas définir de classpath local et d'utiliser celui défini dans le manifest.... mais il ne trouvera pas le jar JSAP malgré le manifest suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.0
    Created-By: 1.5.0_11-b03 (Sun Microsystems Inc.)
    Built-By: someone
    Main-Class: com.pkg.test.Atest
    Class-Path: ./Atest.jar:./JSAP-2.1.jar
    Précisons que la variable d'environnement CLASSPATH contient ".". Si je rajoute à cette variable un dir qui contient JSAP-2.1.jar, cela ne marchera toujours pas.... pareil avec la var CLASSPATH vide d'ailleurs.

    Help me....


    Gal'

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    En ligne de commande ou lors de la définition de la variable d'environnement CLASSPATH, les différents éléments du classpath sont séparé par un caractères dépendant du système, en respectant les règles du-dit système...

    Et sous Windows ce caractères est le point-virgule et non pas les deux-points !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ./ATest.jar;./JSAP-2.1.jar com.pkg.test.Atest


    Enfin comme le manifest est universelle, on utilise l'espace comme séparateur, les chemins sont toujours en relatifs par rapport au jar principal, et il est inutile qu'un jar se référence lui-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class-Path: JSAP-2.1.jar
    a++

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 126
    Par défaut
    T'es un chef, je venais de me rendre compte des deux points...

    Merci

    Gal'

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

Discussions similaires

  1. Optimisation de l'execution de Java en Base
    Par Wurlitzer dans le forum Oracle
    Réponses: 2
    Dernier message: 16/05/2006, 08h51

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