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

Entrée/Sortie Java Discussion :

[Natif] quel outil j'utilise pour faire mon wrapper java, jni ou jna?


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut [Natif] quel outil j'utilise pour faire mon wrapper java, jni ou jna?
    bonjour tous le monde,
    J'ai une application en langage "C", pour laquelle, je dois faire un wrapper java.
    On ma demandé de faire avec l'outil 'JNI'.
    Mais quand j'ai commencé à voir ce dernier, j'ai trouvé dans un lien que 'JNA' est plus simple à utilisé.
    J'ai aucune idéé sur JNA. Et t-il meilleur que jni?

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Je n'ai jamais utilisé ni l'un ni l'autre, mais il me semble que jna est une évolution de jni développée pour palier aux problèmes de jni.

    si tu peux, utilises jna

    ps: http://mbaron.developpez.com/javase/jnijna/

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Merci pour la réponse.
    Svp vous avez un lien pour faire un premier exemple avec 'JNA'

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Cet exemple marche sous windows.
    Moi je travail sous ubuntu linux.

    Merci pour votre aide

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    ça doit pas être tellement différent...

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Merci pour la réponse.

    J'utilise ce lien: http://blog.developpez.com/adiguba?t..._pour_les_nuls
    Pour faire un premier exemple de 'JNA'
    Mais j'ai des problèmes de compilation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exemple.java:18: cannot find symbol
    symbol  : class JNADemo
    Svp quelqu'un peut m'aider?

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut importer des packages dans mon projet
    Bonjour tous le monde.
    Je suis débutante en java,
    Svp comment importé des package a mon projet?
    J'ai télécharger JNA depuis ce lien https://jna.dev.java.net/servlets/Pr...408&folderID=0
    Je veux l'importé a mon projet. Svp comment je fait ?
    Voici mon code:

    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
     
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Platform;
     
    /** Simple example of native library declaration and usage. */
    public class HelloWorld {
     
        public interface CLibrary extends Library {
            CLibrary INSTANCE = (CLibrary)
                Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
                                   CLibrary.class);
     
            void printf(String format, Object... args);
        }
     
        public static void main(String[] args) {
            CLibrary.INSTANCE.printf("Hello, World\n");
            for (int i=0;i < args.length;i++) {
                CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
            }
        }
    }
    J'arrive pas a bien comprendre la notion de package
    Merci pour votre aide

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    un package est simplement un regroupement de classes qui ont des lien entre eux. Les package sont toujours nommé par une série de mot séparés par des point. exemples:

    • java.awt
    • com.sun
    • java.util
    • java.net
    • etc...

    On fait ce regroupement pour s'y retrouver dans les classes et pour éviter les conflit entre les noms de classe quand plusieurs package contienent de classes de même nom. Un exemple en java est la classe 'Date'. Tu as java.util.Date et java.sql.Date, qui sont deux classes différentes. Il faut bien que le compilateur et la jvm sache de quoi tu parle quand tu parle de Date

    Des classes au sein d'un même package ont accessoirement quelquels privilège (dont l'accès aux champs et méthodes protégés)

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Merci pour votre réponse.
    Je veux savoir comment le faire.
    J'ai un projet et je veux l'importé.
    Merci

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    çà dépend comment viens la librairie. Si c'est un jar, tu l'ajoute quelque part à ton projet eclipse puis tu fais sur la jar bouton droit -> build path -> add to project build path

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Oui c'es un fichier jar: "jna.jar"
    Je travail sous linux avec un simple editeur de texte.
    Voici mon code:
    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
     
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Platform;
     
    /** Simple example of native library declaration and usage. */
    public class HelloWorld {
     
        public interface CLibrary extends Library {
            CLibrary INSTANCE = (CLibrary)
                Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
                                   CLibrary.class);
     
            void printf(String format, Object... args);
        }
     
        public static void main(String[] args) {
            CLibrary.INSTANCE.printf("Hello, World\n");
            for (int i=0;i < args.length;i++) {
                CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
            }
        }
    }
    La compilation marche bien comme ceci: javac -cp jna.jar HelloWorld.java
    Mais au moment de l'exécution voici le message qu'il m'affiche:
    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
     
    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Library
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
            at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
            at HelloWorld.main(HelloWorld.java:19)
    Je ne sais pas c'est quoi le probleme.

  13. #13
    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,

    Exemple.java ou HelloWorld.java ? jna.jar puis jni.jar ?
    Et pourquoi deux discussions (que j'ai fusionné) sur le même thème ???

    Cela fait trop d'ambiguïté et il est difficile de te donner de l'aide...


    Soit plus clair et précises bien les fichiers que tu utilises !

    a++

  14. #14
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Merci adiGuba l'execution marche
    c'est bien jna.jar et non p

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par défaut
    Merci pour tout votre aide l'execution marche bien

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

Discussions similaires

  1. Quels outils conseillez-vous pour faire du "remote pair programming" ?
    Par Pierre8r dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 19/01/2015, 12h17
  2. Quels outils logiciels utiliser pour faire son site ?
    Par tripper.dim dans le forum Outils
    Réponses: 36
    Dernier message: 22/05/2008, 18h39
  3. Réponses: 3
    Dernier message: 13/04/2006, 16h57
  4. [Conception]Quel outil graphique utiliser pour schéma BDD?
    Par nicoaix dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 16/01/2006, 12h34
  5. Réponses: 1
    Dernier message: 04/01/2006, 14h39

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