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

Java Discussion :

Le JAR et RedHat


Sujet :

Java

  1. #21
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    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
    24
    25
    26
    27
    28
    29
    public class fichiervolume {
     
    	public static String fichier() throws IOException {
    		// TODO Auto-generated method stub
     
    		String dossierCourant= System.getProperty("user.dir");
    		File f=new File(dossierCourant+"/volumes.txt");
     
     
    		if (f.exists()==false){	
     
    		PrintWriter sortie = new PrintWriter (new FileWriter(dossierCourant+"/volumes.txt"));
     
     
     
     
    		Reader reader = new InputStreamReader(System.in); 
    		BufferedReader input = new BufferedReader(reader); 	
     
     
    	sortie.print("");
    	sortie.close();}
     
    		else{}
    		return dossierCourant;
     
    	}
     
    }
    voila

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah en même temps c'est la méthode renom de la classe renommage qui plante, pas la méthode fichier de la classe fichiervolume que tu nous montre.

    Que fais tu dans la méthode renom?

  3. #23
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le code que tu as posté ne correspond pas à la stacktrace que tu nous a donnée
    [root@spicat ~]# /root/Desktop/SpiralAFServ/Setup_SpiralAF_serv.jar
    Exception in thread "main" java.io.IOException: No such file or directory
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)
    at renomage.renom(renomage.java:19)
    at principale.main(principale.java:17)
    [root@spicat ~]#
    Donne nous le code de la méthode renom de ta classe renomage.
    Personnellement je reçois cette exception quand je tente d'appeler createNewFile sur un fichier dans un répertoire inexistant (avec ton code je n'ai eu aucune exception, de plus c'est pas le bon car tu n'appelles même pas cette méthode...)

    A plus

    EDIT : grillé ^^

  4. #24
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    a ok ok je pensais que c'était ça le probleme!
    voila la methode renom

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    public class renomage {
     
    	public static void renom() throws IOException {
    		// TODO Auto-generated method stub
     
     
    		File appl=new File(fichiervolume.fichier()+"/as/event_application_list.html");
    		File secu=new File(fichiervolume.fichier()+"/as/event_security_list.html");
    		File syst=new File(fichiervolume.fichier()+"/as/event_system_list.html");
    		File sr=new File(fichiervolume.fichier()+"/as/ServeRAID Information.html");
    		File over=new File(fichiervolume.fichier()+"/as/system_overview.html");
     
    			if(appl.exists()==false){appl.createNewFile();}
    			if(secu.exists()==false){secu.createNewFile();}
    			if(syst.exists()==false){syst.createNewFile();}
    			if(sr.exists()==false){sr.createNewFile();}
    			if(over.exists()==false){over.createNewFile();}
     
     
     
     
     
    		File f1 = new File (fichiervolume.fichier()+ "/as/" ) ;
    		InetAddress ip =InetAddress.getLocalHost();
    		File[] strFilesDirs = f1.listFiles ( );
     
     
    		String ligne="";
    	String lignes="";String lignes1;
    		for ( int i = 0 ; i < strFilesDirs.length ; i ++ ) {
    			File nomfich=strFilesDirs[i];
     
    			if(nomfich.getName().contains("new.html")==true){nomfich.delete();}}
     
    		File f2 = new File ( fichiervolume.fichier()+"/as/" ) ;File[] strFilesDirs2 = f2.listFiles ( );
     
    		for ( int i = 0 ; i < strFilesDirs2.length ; i ++ ) {
    			File nomfich2=strFilesDirs2[i];
     
    			if((nomfich2.getName().contains(".html")==true)&&(nomfich2.getName().contains("new.html")==false))	
    			{
    			nomfich2.renameTo(new File(nomfich2+ip.getHostAddress()+"new"+".html")); }
     
    			else{}	}
     
     
     
     
     
    	}
     
    }

  5. #25
    Invité
    Invité(e)
    Par défaut
    Et le répertoire as existe bien dans user.dir ? Je doute que ce soit toujours le cas car tout dépend de là où tu lances la commande java.
    Tu devrais tester son existence et le créer le cas échéant, car createNewFile, ne crée pas l'arborescence en cas de besoin, juste le fichier final et envoie l'exception que tu as si l'arborescence de répertoires n'existe pas (comme dit ci dessus)

  6. #26
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Comme l'a très justement dit George7, ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File appl=new File(fichiervolume.fichier()+"/as/event_application_list.html");
     
    appl.createNewFile();
    ne fonctionnera pas si toute la hiérarchie de répertoires n'existe pas.

    Il faut donc t'assurer que chaque répertoire existe avant de créer le fichier.

  7. #27
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    En fait tous les répertoires que je met en lien "dur" si j'ose dire existent deja...
    le seul point sur lequel je ne peux pas repondre c'est le user.dir, le probleme c'est que je ne sais pas a quoi ça correspond. Je pensais que c'était un paramètre par defaut de la methode System.Property() . Si vous pouvez m'expliquer a quoi ça correspond, je pourrais le changer et vérifier sur linux.En tout cas ça marche sur Windows. merci

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Plutôt que de te baser sur la propriété "user.dir" tu devrais te baser sur la propriété "user.home", dont l'emplacement ne varie jamais (elle vaut c:\Documents And Settings\IdUser sous windows, /home/IdUser sous les unix-like et ainsi de suite) et dans lequel tu es sur de pouvoir écrire (ce qui n'est pas forcément le cas avec le user.dir).
    Accessoirement la best practice ici est de créer un répertoire caché (avec un . avant le nom) dans le user.home qui contiendra touts les fichiers de ton application, que ce soit config, données & ainsi de suite....

    De plus tu dois absolument créer dans ce répertoire touts les sous répertoires dont ton application a besoin.

  9. #29
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    okok, j'ai pas compris grand chose a part qu'il fallait remplacer dir par home...
    Je vais essayer ça et je vous dirais merci en tout cas!

  10. #30
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    j'ai remplacé user.dir par user.home puis par root.home et aucun ne marche! j'ai du mal faire quelque chose c'est pas possible la :/

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Que retourne un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("user.home");
    chez toi?

    Pour le root.home c'est normal que tu aies des problèmes, tu n'as absolument pas le droit d'écrire dedans.

  12. #32
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    Bien le resultat de la console reste le meme
    [root@spicat ~]# /root/Desktop/SpiralAF_servlinux/SpiralAF_serv_linux.jar
    Exception in thread "main" java.io.IOException: No such file or directory
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)
    at renomage.renom(renomage.java:19)
    at principale.main(principale.java:17)
    est-ce réellement ça le probleme??? je pars du principe que ma premiere fonction appelée est celle qui crée mon fichier texte, or celui-ci n'est pas créé...le user.home est sans doute un probleme aussi mais c'est pas ça qui me bloque mon execution, il y a un probleme avant.

  13. #33
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    et pour info le user.home ne marche pas sur windows, je ne sais pas si c'est normal et en plus j'obtient le meme resultat console que sur linux

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Oui mais quel est le retour de l'appel que je t'ai demandé de faire au dessus?

    C'est pas que ça marche pas, c'est juste qu'il te manque les répertoires que tu utilises dans ta méthode renom.

    Tu as l'air de partir un peu dans tous les sens sans bien prendre le temps de comprendre ce qu'il se passe.

  15. #35
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    voila c'est un peu ça...le truc c'est que je suis pas capable de voir ce que fait ce que tu m'a ecris, je n'arrive pas a installer eclipse sur le serveur...dc j'exporte les JAR de mon pc windows vers mon linux

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ouais enfin tu peux toujours faire un jar simple qui ne contient qu'une classe faisant uniquement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.ou.println(System.getProperty("user.home"));
    Puis de l'exécuter sur le serveur unix.

  17. #37
    Invité
    Invité(e)
    Par défaut
    On va reprendre tout calmement et pas à pas

    La propriété user.home permet de retourner le chemin du répertoire utilisateur, de celui qui exécute l'application. L'avantage est que c'est indépendant de la plateforme et que tu auras toujours le droit d'écrire dedans.
    Dans ce répertoire tu crées toute la structure de répertoires dont ton application a besoin, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    File base = new File(System.getProperty("user.home"));
    File structure = new File(base, ".monApp/as");
    // créer tous les répertoires non existants
    structure.mkdirs();
    // ici tu es sûr d'avoir les répertoires dont tu as besoin
    File file1 = new File(structure, "file1.txt");
    // ça sera ok car le répertoire existe et tu as le droit d'écrire dedans (vu que c'est dans ton répertoire personnel quel que soit le système d'exploitation)
    file.createNewFile();
    Tu vois mieux ce que nous voulons dire ?

  18. #38
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    oui oui je vois bien...mais meme si je change en user.home ça ne change rien a l'exécution et mes répertoires sont bien créés j'en ai que 2 et ça j'ai vérifié

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Affiche les chemins lors de l'exécution avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(nomFichier.getPath());
    pour chaque fichier créé avant le createNewFile pour vérifier que chaque chemin est correctement adressé et que le répertoire le contenant existe et est disponible en écriture pour l'utilisateur qui exécute le script.

  20. #40
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    Citation Envoyé par sinok Voir le message
    Ouais enfin tu peux toujours faire un jar simple qui ne contient qu'une classe faisant uniquement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.ou.println(System.getProperty("user.home"));
    Puis de l'exécuter sur le serveur unix.

    j'ai ecris ce code et ça donne /root sur la console, dois-je en déduire que le probleme ne vient pas de la?

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/02/2003, 02h33
  2. [Kylix] Install de Kylix 3 sous RedHat 8.0
    Par skoupay dans le forum EDI
    Réponses: 1
    Dernier message: 19/02/2003, 00h43
  3. Problème montage partition Win sous RedHat ??
    Par baba dans le forum Administration système
    Réponses: 6
    Dernier message: 18/01/2003, 12h26
  4. [Kylix] Kylix et Redhat 8 => problèmes
    Par kot dans le forum EDI
    Réponses: 15
    Dernier message: 15/12/2002, 21h48
  5. creation d un fichier jar ou .exe en java
    Par sadjia dans le forum JBuilder
    Réponses: 13
    Dernier message: 13/12/2002, 17h01

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