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 :

[Ant][JNI] problème <javah>


Sujet :

ANT Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut [Ant][JNI] problème <javah>
    Bonjour,

    dans le cadre d'une application Web, j'ai besion d'utiliser JNI pour interfacer mon application avec une application C++.

    L'utilisation de JNI requiert de nombreuses opérations répétives (compilation des classes Java, complation des classes C++, création des fichiers d'entête C++ , et la création de DLL).

    C'est pour cela que je souhaite automatiser toutres ces opérations en utilisant Ant.

    Pour l'instant j'arive à automatiser la compilation de mes classes Java grâce à la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <javac srcdir="${basedir}/WEB-INF/src/test" destdir="${basedir}/WEB-INF/classes"> 
    </javac>
    Mon problème vient lors de l'automatisation de la génération des fichiers d'entête C++. En lignes de commande, rien de plus simple, je me place à la racine de mon package et je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javah -jni test.TestJNI //sachant que "test" est le nom du package et "TestJNI" le nom dde ma classe
    mais avec Ant, je n'y arrive pas, j'ai constemment une erreur : "[javah] Error: Class test.TestJNI could not be found."
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <javah outputFile="TestJNI.h" > 
          <class name="test.TestJNI1"/> 
    </javah>
    Quelqu'un a une idée ?

  2. #2
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Bonjour,

    Arrives-tu, tout dabord, à faire la compilation via une commande DOS?
    Ta classes se trouve bien sous WEB-INF/scr/test?

    Peut etre que dans le cas de javah il ne va pas chercher les classe sous cette directory?

  3. #3
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Citation Envoyé par yolepro
    Arrives-tu, tout dabord, à faire la compilation via une commande DOS?
    Ta classes se trouve bien sous WEB-INF/scr/test?
    Oui ca fonctionne très bien en commande DOS

    Citation Envoyé par yolepro
    Peut etre que dans le cas de javah il ne va pas chercher les classe sous cette directory?
    Oui sûrement mais justement, où va t-il les chercher ? Je n'ai pas de moyen de le savoir (enfin je crois...)

    Citation Envoyé par KiLVaiDeN
    Ton basedir est bien setté en rapport avec ton chemin de classes ?
    Je n'utilise pas "basedir" dans ma commande javah

    Pour résumé, il faudrait que je sache où pointe le <javah> pour aller cherhcer les classes. Une idée ?

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Le basedir est au niveau de ton projet Ant, et donc ton javah se base dessus pour les chemins relatifs

  5. #5
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    J'ai essayé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <javah outputFile="test_TestJNI.h" > 
            <class name="${basedir}/WEB-INF/src/test/TestJNI1"/> 
    </javah>
    et ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <javah outputFile="test_TestJNI.h" > 
            <class name="${basedir}/WEB-INF/src/test.TestJNI1"/> 
    </javah>
    avec slash et anti-slash, sachant que ${basedir} pointe bien à la racine de mon projet mais rien n'y fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Buildfile: E:\Program Files\eclipse\workspace\JNI\build.xml
        [javac] Compiling 1 source file to E:\Program Files\eclipse\workspace\JNI\WEB-INF\classes
        [javah] ClassArgument.name=E:\Program Files\eclipse\workspace\JNI\WEB-INF\src\test\TestJNI1
        [javah] Error: Class E:\Program Files\eclipse\workspace\JNI\WEB-INF\src\test\TestJNI1 could not be found.
    Pourtant mes .java sont bien situés ici. J'ai même essayé de faire pointé vers mes .class et ca ne fonctionne pas non plus.
    Je sature là...

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    pourquoi TestJNI1 ?

    As-tu regardé le basedir de ton projet Ant ??

  7. #7
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Ton basedir est bien setté en rapport avec ton chemin de classes ?

    Peut-être as-tu oublié src/

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

Discussions similaires

  1. [JNI] problème avec javah
    Par mehdiba dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 16/03/2009, 15h06
  2. Réponses: 5
    Dernier message: 14/12/2007, 16h53
  3. JNI : à quoi sert le fichier d'entête géneré par javah ?
    Par Belgar dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 18/06/2007, 16h29
  4. [ant] Appeler javah depuis ant
    Par GLDavid dans le forum ANT
    Réponses: 1
    Dernier message: 10/07/2006, 16h30
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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