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 :

diffusion de mon programme sur linux et windows


Sujet :

Langage Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut diffusion de mon programme sur linux et windows
    Bonjour, j'ais actuellement un problème pour diffuser mon programme en java,

    Mon appli utilise des fichiers qui sont dans le dossier où se trouve mon jar (image, fichier de conf...)

    Aucun problème pour windows donc, mais le problème se rencontre sous linux.
    Par exemple, si je veux faire un package debian pour installer mon appli, je dois avoir les images dans /usr/share/<app>/, les librairies dans /usr/lib/<app>/ et les fichiers de conf dans /etc/<app>

    Je me pose donc la question comment faire pour que mon application aille chercher :
    sous linux les images dans /usr/share/<app>/ les librairies dans /usr/lib/<app>/...
    sous windows les images et les fichiers de conf dans le même dossier que l'application

    SANS pour autant que le code diffère entre la version windows et la version linux

    Merci d'avance

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    met tes images également dans /usr/lib, non?

  3. #3
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Oui si tu veux mais ça ne repond pas à ma question :

    Comment faire pour que mon application aille chercher :
    sous linux les images dans /usr/lib/<app>/ les librairies dans /usr/lib/<app>/...
    sous windows les images et les fichiers de conf dans le même dossier que l'application
    SANS pour autant que le code diffère entre la version windows et la version linux ?

    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Tu peux essayer un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String osName = System.getProperty("os.name");
    File imageDir;
    File libDir;
    if (osName.startsWith("Windows")) {
        // Utilisation du répertoire courant
        imageDir = new File(".");
        libDir = imageDir;
    } else {
        imageDir = new File("/usr/share/<app>");
        libDir = new File("/usr/lib/<app>");
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Je n'ai jamais essayé, mais n'est-il pas possible d'utiliser des variables d'environnement comme MONAPP_IMG_DIR et MONAPP_LIB_DIR que tu positionnes dans le script au lancement de l'appli ?
    C'est ce qui te permettrait d'avoir le code le plus générique en JAVA avec juste un paramétrage à l'exécution.

  6. #6
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    C'est une solution merci pour l'exemple, je vais essayer...
    Je pensais que les concepteurs de java avais prévu un truc expret, mais ça n'as pas l'air d'être le cas !




    Sinon, pour mac OS, vous savez comment ça se dispose ? Est ce les même répertoire que pour les UNIX ? car je n'ais jamais touché à un mac de ma vie

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Pour Mac OS X, tu peux tout laisser dans le même répertoire.

  8. #8
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    merci fr1man est tu sur ? est tu un utilisateur de mac os ?
    Si oui, peux tu m'envoyer ce que renvoie :

    System.out.println(System.getProperty("os.name"));

    stp ?




    --------------

    Autre question en rapport avec les UNIX !
    Comment obtenir le dossier de l'utilisateur (/homer/moi/) ?
    Quelle classe faux t il utiliser ?

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par lex13 Voir le message
    Autre question en rapport avec les UNIX !
    Comment obtenir le dossier de l'utilisateur (/homer/moi/) ?
    Quelle classe faux t il utiliser ?
    Il suffit de récupérer le "user.home" de la même façon que le "os.name" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String userHomePath = System.getProperty("user.home");
    renvoie "/home/user" pour les UNIX et "C:\Documents and Settings\user" pour Windows .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  10. #10
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    merci ! impecable,
    J'avais essayé user.dir mais c'été pas ça !

    Si un utilisateur de mac passe par ici ce serait cool s'il pouvais me retourner la valeur de :

    System.out.println(System.getProperty("os.name"));


  11. #11
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par lex13 Voir le message
    merci ! impecable,
    J'avais essayé user.dir mais c'été pas ça !

    Si un utilisateur de mac passe par ici ce serait cool s'il pouvais me retourner la valeur de :

    System.out.println(System.getProperty("os.name"));

    Tiens, je suis sous kubuntu, j'étais persuadé que ça allait m'afficher (k)ubuntu ou quelque chose du genre (avec la version du noyau, lol), non, juste "Linux".
    Sous Windows XP et Vista ça affiche quoi?

  12. #12
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Pour windows xp ça affiche Windows xp vista je sais pas

  13. #13
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Est ce que vous savez comment faire pour que mon appli aille chercher les différentes librairies (swingx, jdic...) dans /usr/lib/monapp plutot que dans le dossier "lib" du dossier ou se trouve l'executable ?

  14. #14
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par lex13 Voir le message
    Est ce que vous savez comment faire pour que mon appli aille chercher les différentes librairies (swingx, jdic...) dans /usr/lib/monapp plutot que dans le dossier "lib" du dossier ou se trouve l'executable ?
    Dans ton classpath (de ton jar par exemple), tu indiques les librairies dans le répertoire que tu veux... malib.jar ou lib/malib.jar

  15. #15
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par ®om Voir le message
    Dans ton classpath (de ton jar par exemple), tu indiques les librairies dans le répertoire que tu veux... malib.jar ou lib/malib.jar
    Mais comment faire pour que sous windows les librairies sois cherchées dans le dossier de l'executable et sous unix dans /usr/lib/monapp ?

    PS : le classpath c'est quoi ? un fichier ? qui se trouve où ?

    PS2 : pour l'instant j'ais mis toutes mes librairies en ajoutant les jar aux dossier librairies de mon projet
    Merci d'avance

  16. #16
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par lex13 Voir le message
    Mais comment faire pour que sous windows les librairies sois cherchées dans le dossier de l'executable et sous unix dans /usr/lib/monapp
    Bah, euh, ton executable il se trouve pas dans /usr/lib/monapp? (executable je parle du .jar)...?

  17. #17
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Pour l'instant je développe sous windows, et je pensais mettre mon executable dans /usr/bin pas dans /usr/lib

    Sinon le classpath selon wiki c'est ça :
    "Classpath" est un paramètre passé à une machine virtuelle Java qui définit le chemin d'accès au répertoire où se trouvent les classes et les packages Java afin qu'elle les exécute.


    Les librairies et les executables sont généralement séparées ( les librairies dans /usr/lib/ et les executables dans /usr/bin/) apparement le classpath c'est le dossier où est l'executable donc pas celui ou se trouve les librairies...

    Comment je fais alors ?

  18. #18
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par lex13 Voir le message
    Les librairies et les executables sont généralement séparées ( les librairies dans /usr/lib/ et les executables dans /usr/bin/) apparement le classpath c'est le dossier où est l'executable donc pas celui ou se trouve les librairies...

    Comment je fais alors ?
    Dans /usr/bin, tu mets juste un script qui fait java -jar /usr/lib/tonjar.jar... (c'est souvent ce qui est fait il me semble)

  19. #19
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Ah ok je savais pas merci beaucoup alors
    ça règle le probème !

    Je ne ferme pas le topic car là je suis en train de finaliser mon log et il va surement y avoir d'autres question

  20. #20
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    J'avais bien dis que je remettrais mon topic sur le tapis

    Voila mon problème :

    Pour gérer l'update de mon log, je vérifie si il y a une nouvelle version dispo.
    Si oui, je lance update.jar et je ferme monapp.jar
    Sous windows tout se passe bien je peux supprimer/changer des parties du logiciel sans que le système ne bronche.
    Sous les unix, il faux être en root pour modifier les fichiers dans /etc/, /usr/lib/ et /usr/share/.

    Ma question est donc la suivante : Comment faire pour lancer update.jar en root à partir de monapp.jar ? Y a t il une méthode toute faites ? Ou faux t il prévoir de créer une interface demandant login+pass ?

    Merci d'avance

Discussions similaires

  1. Cocoa sur Linux ou Windows
    Par Tux1 dans le forum Apple
    Réponses: 24
    Dernier message: 10/04/2010, 18h57
  2. migration projet rails sur linux from windows
    Par horkets dans le forum Ruby on Rails
    Réponses: 15
    Dernier message: 14/02/2008, 14h44
  3. Installation de nouveaux programme sur linux exp(Oracle)
    Par deutsch dans le forum Administration système
    Réponses: 2
    Dernier message: 02/12/2006, 14h14
  4. Réponses: 14
    Dernier message: 27/10/2006, 13h08
  5. Souci de fermeture de mon programme à la fermeture de Window
    Par Foromus dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/03/2006, 16h01

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