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 :

appeler une librairie .so dans une classe


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut appeler une librairie .so dans une classe
    Bonjour à tous!
    voila mon probleme :
    j'ai un package qui s'appelle monPackage, dans lequel se trouve un fichier Hello.java et une librairie libHelloLibr.so.
    Voici mon fichier Hello.java :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package monPackage;
    public class Hello {
    	private native void AfficherUnMessage();
    	static {
    		System.load ("/root/workspace3/essai_package2/monPackage/libHelloLibr.so" );
    	        System.out.println("lib chargée\n");
    	}
    	public static void main(String [] arguments) {
    		new monPackage.Hello().AfficherUnMessage();
    	}
    }

    Lorsque j'execute voici le résultat :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lib chargée
    Exception in thread "main" 
    java.lang.UnsatisfiedLinkError: AfficherUnMessage
    	at monPackage.Hello.AfficherUnMessage(Native Method)
    	at monPackage.Hello.main(Hello.java:13)

    Quel est le probleme? On dirait qu'il trouve la librairie, mais pas la fonction... bizarre!
    Quelqu'un a-t-il la solution?
    Merci
    tet.dum

  2. #2
    Membre régulier Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Points : 90
    Points
    90
    Par défaut
    j'ai récup ca dans mes cours de JNI :
    Exemple de prog JNI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class HelloWorld {
      public native void sayHelloNatively();
     
      static {
        System.loadLibrary("hello");
      }
      public static void main(String[] args) {
        HelloWorld testJNI = new HelloWorld();
        testJNI.sayHelloNatively();
      }
    Donc à voir il faut que tu déclares dans ta classe une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public native void afficherUnMessage();
    Si tu veux je peux mettre en ligne les transparents ou j'ai pris cela

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    ok, je veux bien, merci

  4. #4
    Membre régulier Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Points : 90
    Points
    90
    Par défaut
    Je demande à mon prof la permission (droit d'auteur oblige...) et je te donne l'adresse... Mais faut pas t'attendre à un truc parfait... c'est juste quelques slides qui permettent de faire un programme simple... (et comme c'est des slides, ben y a pas tout qui est expliqué... sinon y aurait pas besoin d'aller au cours )


    je fais ca au plus vite.

  5. #5
    Membre régulier Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Points : 90
    Points
    90
    Par défaut
    ok. Il a pas l'air chaud... je fais une dernière tentative, mais recherche plutôt sur le net. A voir, je pense qu'il te manque juste une ou deux bases... Donc cherche un truc genre JNI tutorial Helloworld et tu devrais trouver une ou deux idées (si c'est déjà fait et que t'as rien trouvé... ben euh.... je suis désolé)

    P.S. je comprends pas les profs qui veulent pas que leur cours soit donner plus loin. pour une fois qu'on lui dit que son cours peut-être utile à quelqu'un... il devrait plutôt être content...
    Au pire je fais un résumé et je te le donne... on verra... je te tiens au courant...

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Voir le tutoriel Java JNI de jmd dans les cours Java : http://java.developpez.com/cours/ basique et parfait pour commencer avec.
    Sinon accessoirement c'est très mal de travailler en tant que root sous linux...

    Normalement tu ne dois en aucun cas te logger en root, sauf extrème mesure

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    ok, merci pour le tutorial, ca m'a bien aidé!
    Je suis obligé de travailler en root, c'est tomcat qui le demande (j'en ai besoin par la suite pour des web services)! sinon, comment faire?

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bien configurer ton tomcat au niveau des permissions, mais bon là je n'ai pas le temps d'en expliquer plus.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    j'attend ta réponse quand tu auras plus de temps.
    Mon os : linux fedora core4

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2011, 11h07
  2. Réponses: 8
    Dernier message: 05/04/2011, 09h06
  3. Réponses: 6
    Dernier message: 13/11/2009, 17h06
  4. Réponses: 15
    Dernier message: 27/03/2009, 14h37
  5. Réponses: 20
    Dernier message: 14/06/2008, 13h05

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