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 :

comment rendre un programme java compatible windows et linux?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut comment rendre un programme java compatible windows et linux?
    Bonjour,

    en fait j'ai fait un programme web qui génère des fichiers de configuration sur windows et le programme marche parfaitement et il me génère un fichier dans l'emplacement suivent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //File file = new File("C:" + File.separator + "tetsjava" + File.separator + file_name + ".conf");
    ma question est comment dois je faire pour que mon programme marche pour le deux os, sans avoir besoin à modifier quoi que ce soit.
    sachant aussi quei je ne veux pas qu'on me génère mes fichiesr de configuration n'importe ou.
    par exemple sur linux je veux que les fichiers soit générés dans le /home/utilisateur_connecté/servCcon/pcConf.
    sachant que chaque utilisateur doit avoir l'arborecsence ~/servConf/pcConf

    merci

  2. #2
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Alors peut être que j'ai du mal à cerner ta demande....mais java doit fonctionner sur les deux environnements sans problème au vu de ton code

    Après si tu veux réellement faire des traitements spécifiques que je ne perçoit pas tu peux toujours récupérer l'OS avec un appel d'une methode Sytem.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.getProperties().get("os.name");
    Après à toi de gérer ce que tu veux faire en fonction du retour.....avec un bon vieux switch/case à la dure ....ou autrement...


    =======
    JAVA bien , merci

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    euh je ne pense pas que j'ai bien saisis ta réponse est ce que stp tu peux illustrer tes propos par un exemple.

    merci pour ta réponse

  4. #4
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    ton problème c'est que tu hardcode l'emplacement. Non seulement ca ne marchera pas sous linux, mais ca ne marchera pas non plus sur les machine windows qui n'ont pas de "C:" (oui c'est tordu, mais y a toujours de malin avec des configurations inhabituelles)

    Pour stocker quelque chose dans le dossier utilisateur, utiliser

    System.getProperty("user.dir"), ca te donne le répertoire perso du user courant, quel que soit l'os. A partir de là tu fait un

    new File(new File(userdir),"monSousdossier")

  5. #5
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    OK OK ....désolé....

    Je pense que la soluce de Tchize te parlera plus....

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    merci vous deux, je testerais cette solution

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    voila toujour le même problème ça fonctionne sur windows mais pas sur linux.
    j'ai testé cette exemple pour une machine windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    	     	String userdir =System.getProperty("user.dir");
                File file = new File(new File(userdir), "tetsjava" + File.separator + file_name + ".conf");
                System.out.print(userdir);
                file.createNewFile();
    et ça marche,
    puis j'ai testé ceci sous linux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    	     	String userdir =System.getProperty("user.dir");
                File file = new File(new File(userdir), "servConf" +File.separator+ "pcConf" +File.separator + file_name + ".conf") ;
                System.out.print(userdir);
                file.createNewFile();
    mais ça marche pas

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    je précise quand même que le dossier /servConf/pcConf existe déjà dans le home directory de l'utilisateur connecté.

  9. #9
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    tu as quoi comme message d'erreur?

  10. #10
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    par le plus grand des hasards tu n'aurais pas besoin de "préférence" utilisateur? (java.util.prefs)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    j'ai testé ce code sur ma machine locale, un windows sur une vmware et Ubuntu sur la même VM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	out.println("Entree dans la methode genererFileConfName");
     
    			     	String userdir =System.getProperty("user.dir");
    		            out.print(userdir);
    					File file = new File(new File(userdir), "servConf" +File.separator+ "pcConf" +File.separator + file_name + ".conf") ;
    sur le deux OS sur la VM je n'ai pas eu de retour même pas une erreur, encore pire le "out" de mon "println" n'affiche rien.
    par contre sur la machine locale ça bien marché mon "out" affiche le message suivant
    Entree dans la methode genererFileConfName C:\Program Files\Apache Software Foundation\Tomcat 6.0
    et mes fichiers ont été bien générés dans ce dossier
    C:\Program Files\Apache Software Foundation\Tomcat 6.0\servConf\pcConf\fichier1.conf
    .
    cela aussi me pose un problème le fait que mon fichier n'a pas été généré par exemple dans "C:\servConf\pcConf", je pense que le System.getProperty("user.dir");
    renvoi le répertoire courant au moment de l'exécution.


    si non professeur tu peux expliquer un peu ton idée stp
    ar le plus grand des hasards tu n'aurais pas besoin de "préférence" utilisateur? (java.util.prefs)
    merci vous tous

  12. #12
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    [quote=glasgow;4351585sur le deux OS sur la VM je n'ai pas eu de retour même pas une erreur[/quote]

    C'est que tu catche les Erreur dans un bloc vide, un très mauvais idée. Recherche dans ton code des occurence de ce genre de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch (Exception e){
       // on affiche rien de particulier
    }
    et remplacer les, au minimum par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(Exception e){
        e.printStackTrace();
     }
    Sans l'erreur on peut pas t'aider.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    oui j'ai ajouté le e.printStackTrace() dans mes catch, mais ça ne rien donné.
    vous savez ce qui est bizarre!!!!, mon programme marche sur mon windows mais quand je le teste sur un autre windows ou un Ubuntu montés sur une VMware, ça ne fonctionne pas.
    et quand je dit cela fonctionne plus, je parle seulement de la page Generation.jsp qui est censé généré un fichier conf sur le home de l'utilisateur. par contre les autres pages fonctionne correctement.
    donc pour résumé Generation.jsp déconne sur le XP et Ubuntu de ma VM et fonctionne correctement sur la machine locale.

  14. #14
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    le e.printStackTrace() va afficher l'exception dans les logs de ton conteneur, (ben oui t'avais pas sit que t'était en mode j2ee). C'est donc là qu'il faut regarder. Tu peux aussi faire, éventuellement, un e.printStackTrace(out) pour l'envoyer sur la page jsp. Sinon, va falloir qu'on vois un peu plus du code!

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par glasgow Voir le message
    Generation.jsp qui est censé généré un fichier conf sur le home de l'utilisateur.
    Euh, par utilisateur tu veux dire serveur utilisateur de ton appli oubien client utilisateur qui va sur ta page Generation.jsp?

    Parce que si tu parles de client il me paraît normal que ça ne marche pas pour deux raisons:

    1) le jsp s'exécute sur le serveur
    2) dans tous les cas tu n'as surement pas les droits admin pour créer un fichier.


    EDIT: ça peut venir également de la VM. Faudrait que tu testes ton appli sur une autre vraie machine.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    MERCI VOUS TOUS, j'ai trouvé la solution , mon appli est bien compatible avec toutes les machines et tous les OS

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

Discussions similaires

  1. Comment compiler un programme Java sur Windows 7
    Par estrellas dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 28/12/2011, 09h37
  2. Comment exécuter un programme java sous Window ?
    Par newbo dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 04/10/2010, 07h05
  3. Comment rendre les programmes compatibles sur Vista ?
    Par wa3dbk dans le forum Windows Vista
    Réponses: 1
    Dernier message: 06/10/2007, 17h58
  4. Réponses: 1
    Dernier message: 10/12/2006, 14h38
  5. Réponses: 4
    Dernier message: 07/12/2006, 10h53

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