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 :

JNI mac : Utilisateur limité


Sujet :

Entrée/Sortie Java

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut JNI mac : Utilisateur limité
    Bonjour,

    Mon applet java fonctionne avec une librairie JNI.
    Sur mac, cette librairie, je la copie sur le répertoire /Library/Java/Extensions de l'utilisateur au chargement de l'applet pour que je puisse la charger ensuite avec System.loadLibrary("MaLib")
    Avec un utilisateur normal, il n'y a pas de problème. La copie se passe normalement. Mais avec un utilisateur limité, la copie est refusée. C'est logique.
    Pour que chaque utilisateur puisse utiliser des librairies d'extensions, on peut utiliser un répertoire qui lui est propre users/utilisateur/Library/Java/Extensions.

    Après quelques tests, j'ai remarqué qu'au démarrage de Java, celui-ci utilise (pour le chargement de librairie) le répertoire users/utilisateur/Library/Java/Extensions si il existe, et /Library/Java/Extensions sinon.

    Le problème est donc le suivant : si au démarrage de java le dossier propre à l'utilisateur limité n'existe pas, java va se baser sur celui du système en général. Même si je crée le répertoire et que je copie ma librairie dedans, java ne va pas le prendre en compte puisqu'il n'existait pas au démarrage.
    Que faire? Existe-t-il un moyen de reinitialiser le java.library.path? Peut-on charger une librairie jni avec autre chose que System.loadLibrary?

    Merci d'avance

    Benjamin

    ps hors sujet : d'autres personnes ont des problèmes(JSObject...) avec les dernières versions de Java(1.5.0_11) et IE(7.0)?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 960
    Points : 4 389
    Points
    4 389
    Par défaut
    Citation Envoyé par Beuuun
    Bonjour,

    Le problème est donc le suivant : si au démarrage de java le dossier propre à l'utilisateur limité n'existe pas, java va se baser sur celui du système en général. Même si je crée le répertoire et que je copie ma librairie dedans, java ne va pas le prendre en compte puisqu'il n'existait pas au démarrage.
    Que faire? Existe-t-il un moyen de reinitialiser le java.library.path? Peut-on charger une librairie jni avec autre chose que System.loadLibrary?
    une solution serait de faire le démarrage de l'application en bootstrap :

    la première phase ne doit pas dépendre de la librairie et teste si l'environnement est configuré tel que nécessaire (que le ~/Library/… existe…) et si non fait le nécessaire
    et ensuite seulement lance la vraie application

    la première étape de doit pas être en Java (mais elle peut…) : vous pouvez la faire dans un script shell…


    une autre serait de faire un installateur qui configure l'environnement de l'utilisateur tel que vous le désirez…

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par JeitEmgie
    une solution serait de faire le démarrage de l'application en bootstrap :

    la première phase ne doit pas dépendre de la librairie et teste si l'environnement est configuré tel que nécessaire (que le ~/Library/… existe…) et si non fait le nécessaire
    et ensuite seulement lance la vraie application

    la première étape de doit pas être en Java (mais elle peut…) : vous pouvez la faire dans un script shell…


    une autre serait de faire un installateur qui configure l'environnement de l'utilisateur tel que vous le désirez…
    Et c'est possible ça avec une applet?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Personne n'a trouvé de solution pour ce problème?

  5. #5
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    Citation Envoyé par Beuuun
    Bonjour,

    Mon applet java fonctionne avec une librairie JNI.
    Sur mac, cette librairie, je la copie sur le répertoire /Library/Java/Extensions de l'utilisateur au chargement de l'applet pour que je puisse la charger ensuite avec System.loadLibrary("MaLib")
    Avec un utilisateur normal, il n'y a pas de problème. La copie se passe normalement. Mais avec un utilisateur limité, la copie est refusée. C'est logique.
    (...)
    Que faire? Existe-t-il un moyen de reinitialiser le java.library.path? Peut-on charger une librairie jni avec autre chose que System.loadLibrary?

    Merci d'avance

    Benjamin
    Je n'ai pas utilisé System.loadLibrary mais je sais qu'il est plus simple d'inclure dans le dossier "lib" avant de compiler java pour avoir acces aux fonctions de la librairie. Aussi il est important si tu veux avoir l'environnement correct pendant la phase de developpement de placer les libs dans le rep Extensions deja cité, autrement ca ne tournera pas lors des tests.
    En résumé:
    - soit tu inclus dans le package;
    - soit tu installes la lib dans le rep /Library/Java/Extensions* puis tu peux charger avec System.loadLibrary en sus pour assurer la JVM...
    (*)À savoir que le dossier des extensions racine est récurrent pour tous les utilisateurs Mac, meme limités.


Discussions similaires

  1. droits des utilisateurs limités
    Par frantzgac dans le forum Windows XP
    Réponses: 2
    Dernier message: 13/07/2009, 09h19
  2. Réponses: 3
    Dernier message: 13/02/2009, 19h46
  3. Créer un fichier modifiable par utilisateur limité
    Par basile238 dans le forum Windows
    Réponses: 5
    Dernier message: 25/01/2009, 17h48
  4. Création compte utilisateur limité
    Par kikoo_of_dijon dans le forum Debian
    Réponses: 1
    Dernier message: 21/09/2007, 22h09
  5. Nombre utilisateurs limités
    Par Francis dans le forum InterBase
    Réponses: 3
    Dernier message: 19/09/2006, 20h11

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