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

avec Java Discussion :

problème de routage


Sujet :

avec Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut problème de routage
    Bonsoir à tous,

    J'ai un programme dont l'arborescence (obligatoire) est la suivante :
    TPprojet2
    |_ esstin
    |_outils (où je mets tous mes fichiers .java qui traitent les taches de fond)
    |_test (où je mets tous mes fichiers .java principaux)

    Cependant, certains fichiers contenus dans le package "outils" ET d'autres fichiers contenus dans le package "test" font appels à un même fichier Test.txt

    Or, quand je lance le main (contenu dans le package "test"), j'ai une erreur car le fichier Test.txt est malheureusement introuvable En effet, le programme le génère mais il le met à la racine de mon arborescence (c'est à dire au dessus du dossier "esstin").

    De ce fait, je pense que le fichier java qui créé le fichier (de sauvegarde) Test.txt devrait préciser dans quel package il doit être enregistré. C'est là que je bloque :
    * Comment donner la route à un fichier texte ?
    * Dans mon cas, quelle route dois-je lui donner puisque ce fichier est appelé par les deux packages ?

    Merci à tous pour votre aide,
    J'espère avoir été claire dans mes explications...
    Bonne soirée
    Aud-

  2. #2
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    par route tu entends chemin ?
    si c'est le cas pourquoi ne pas donner le chemin jusqu'à ta racine vu que c'est là qu'il est ...
    mais je ne suis pas sur d'avoir compris la question

  3. #3
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Dans un cas comme celui-ci, je cherche pas trop. Je mets le fichier en ressource dans le .jar (test ou pas). et la JVM se charge de le trouver.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    Désolé mais je n'ai pas compris ta phrase : "Je mets le fichier en ressource dans le .jar (test ou pas)" et également "la JVM". N'oubliez pas que j'ai postée ce message dans la partie "débutant"... ;-)

    Apparemment je n'ai pas été bien claire dans mes explications : quand je dis "routage" ça veut dire "le chemin d'accès" au fichier en question.

    Je fais un rappel des faits :
    des fichiers .java dans des sous-dossiers différents pointent vers un même fichier Test.txt qui se trouve à la racine de mon arborescence. Cependant, je n'arrive pas à dire aux fichiers, comment pointer vers l'adresse de cet élément (Test.txt) qui se trouve à la racine...

    Merci à tous pour vos futures réponses
    Aud-

  5. #5
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Lorsque tu généres un test ou lapplication, tu fais un .jar. Le .jar contient toutes les ressources pour l'execution du projet, et aussi les fichier .class.

    Pour avoir accès à une ressouce dans le .jar (type text.txt), il te faut utiliser le classLoader de la classe : this.class().getRessourceAsStream("nomDeLaClasseAvecPackage")

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream is = this.getClass().getRessourceAsStream("test.txt");
    et tu travailles avec is comme classique.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    Voici mon code pour sauver et lire un fichier, voici ce qui se trouve dans ma class appelée Classement :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    /** Procedure permettant la sauvegarde du classement */
    	public void save(String nomFich) {
    		try {
    			Writer fich = new FileWriter(nomFich);
    			fich.write(new Integer(nbrMaxEq).toString() + "\n");
    			for (int i = 0; i < nbrMaxEq; i++) {
    				String tmp = "" + getEquipeID(i + 1).getNom() + ""
    						+ getEquipeID(i + 1).getPoints() + " "
    						+ getEquipeID(i + 1).getJournee() + ""
    						+ getEquipeID(i + 1).getGagnee() + " "
    						+ getEquipeID(i + 1).getNulle() + ""
    						+ getEquipeID(i + 1).getPerdu() + " "
    						+ getEquipeID(i + 1).getDiffBut() + "\n";
    				fich.write(tmp);
    			}
    			fich.close();
    		} catch (IOException e) {
    			System.err.println(nomFich + " - Erreur: " + e.toString());
    		}
    	}
     
    	/** Lecture du fichier avec les informations */
    	public void lireFichier(String nomFich) {
    		String line;
    		int i = 0;
    		boolean firstLine = true;
    		try {
    			FileReader fich = new FileReader(nomFich);
    			BufferedReader tampon = new BufferedReader(fich);
    			boolean eof = false;
    			while (!eof) {
    				line = tampon.readLine();
    				if (line == null)
    					eof = true;
    				else {
    					if (firstLine) {
    						int nbrEq = Integer.parseInt(line);
    						eq = new Equipe[nbrEq];
    						ind = 0;
    						nbrMaxEq = nbrEq;
    						firstLine = false;
    					} else {
    						line = line.trim();
    						ind = line.indexOf(' '); // indice de l'espace
    						String nom = line.substring(0, ind);// on recupere le nom
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' '); // espace
    						int Pts = Integer.parseInt(line.substring(0, ind)); // on recupere les points
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int J = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int G = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int N = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int P = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						int Diff = Integer.parseInt(line);
    						eq[i] = new Equipe(nom, i + 1);
    						eq[i].setPoints(Pts);
    						eq[i].addJournee(J);
    						eq[i].addGagnee(G);
    						eq[i].addNulle(N);
    						eq[i].addPerdu(P);
    						eq[i].addDiffBut(Diff);
    						i++;
    					}
    				}
    			}
    			tampon.close();
    			fich.close();
    		} catch (IOException e) {
    			System.err.println(nomFich + " - Erreur: " + e.toString());
    		}
    	}
    Je suppose que c'est à cet endroit que je dois préciser où je veux qu'il enregistre le fichier ? ou alors il faut que je modifie la ligne de celui qui appelle le fichier ?

    Voici le code contenu dans la class nommée "FenetreSimple" qui appelle le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Championnat ch = new Championnat("test.txt");
    ch.saver("test.txt");
    ch.lire("test.txt");

  7. #7
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    et bien au lieu de "text.txt" tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\\dossier1\\dossier2\\...\\text.txt"
    où dossier1, dossier2 etc.. représente ton arborescence

  8. #8
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Ah ! mais tu veux aussi sauvegarder dans le fichier ! Dans ce cas là, c'est plus une ressource. Tu peux que pointer le fichier avec la méthoe décrite ci-dessus.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    oui mais en faisant comme jojodu31, est-ce que ça marchera également si j'essaye le programme sur une autre machine?

    je suppose que la réponse est non... Du coup comment faire pour qu'il retrouve le fichier Test.txt à tous les coups?

    Merci à tous
    Aud-

  10. #10
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Non, ça marche pas sur toutes les machines (OS) car la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\dossier1\dossier2\fichier
    est spécifique à Windows. Sous Unix c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /dossier1/dossier2/ficher
    .

    Pour que se soit portable, il faut construire la chaîne de ton fichier : chemin+nom avec les méthode de la classe File.

    Un lien interressant :http://java.developpez.com/faq/java/...chier_portable

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    en effet c'est bien dans cette classe java.io.file qui faut que je pioche...
    j'ai trouvé ce site qui donne pas mal d'aide.

    Néanmoins, je ne vois pas comment faire...

    A un moment dans le main, j'ai cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Championnat ch = new Championnat("test.txt");
    qui fait donc référence à ceci dans la classe Championnat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /** procedure qui participe a la sauvegarde */
    	public Championnat(String fich) {
    		cl = new Classement();
    		cl.lireFichier(fich);
    		nbrMaxEq = cl.getNbrMaxEq();
    		gm = new Graphe_Matrice(nbrMaxEq);
    		gl = new Graphe_ListeAdj(nbrMaxEq);
    	}
    où cl est définit comme tel :
    et cl.lirefichier dans la classe Classement le voici :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    /** Lecture du fichier avec les informations */
    	public void lireFichier(String nomFich) {
    		String line;
    		int i = 0;
    		boolean firstLine = true;
    		try {
    			FileReader fich = new FileReader(nomFich);
    			BufferedReader tampon = new BufferedReader(fich);
    			boolean eof = false;
    			while (!eof) {
    				line = tampon.readLine();
    				if (line == null)
    					eof = true;
    				else {
    					if (firstLine) {
    						int nbrEq = Integer.parseInt(line);
    						eq = new Equipe[nbrEq];
    						ind = 0;
    						nbrMaxEq = nbrEq;
    						firstLine = false;
    					} else {
    						line = line.trim();
    						ind = line.indexOf(' '); // indice de l'espace
    						String nom = line.substring(0, ind);// on recupere le nom
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' '); // espace
    						int Pts = Integer.parseInt(line.substring(0, ind)); // on recupere les points
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int J = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int G = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int N = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						ind = line.indexOf(' ');
    						int P = Integer.parseInt(line.substring(0, ind));
    						ind = line.indexOf(' ');
    						line = line.substring(ind);
    						line = line.trim();
    						int Diff = Integer.parseInt(line);
    						eq[i] = new Equipe(nom, i + 1);
    						eq[i].setPoints(Pts);
    						eq[i].addJournee(J);
    						eq[i].addGagnee(G);
    						eq[i].addNulle(N);
    						eq[i].addPerdu(P);
    						eq[i].addDiffBut(Diff);
    						i++;
    					}
    				}
    			}
    			tampon.close();
    			fich.close();
    		} catch (IOException e) {
    			System.err.println(nomFich + " - Erreur de lecture: " + e.toString());
    		}
    	}

    Que dois-je changer pour que lorsque je lance mon main, il ne me mette pas "fichier Test.txt introuvable" ?

    PS: je suis désolée d'insister lourdement...

    Merci par avance
    Aud-

  12. #12
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Ce programme semble correcte (je passe la recherche des espaces (' ') qui pourrait se faire avec une TokenString)

    Le fichier "texte.txt" doit se trouver dans le répertoire de l'application... du jar.

    Tu executes sous l'EDI ou tu fais un jar et tu l'execute ensuite par la ligne de commande ? Si tu fais sous EDI, essaye de lancer le jar via la ligne de commande : les EDI ont tendance à supprimer les fichiers du répertoire où sera placer le jar final, avant reconstruir les fichiers.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    heum, je n'ai pas tout compris à ta question (EDI??,Jar??). Je vais néanmoins essayer de répondre...
    Je fais mon programme sur éclipse et j'exécute dans sa console. Du coup je ne gère pas de .jar

  14. #14
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Alors essaye de générer un jar, et execute le hors de Eclipse.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    comment on fait pour executer un jar?

  16. #16
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par canary Voir le message
    comment on fait pour executer un jar?
    A tout hasard on lit la

  17. #17
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    et même qu'elle est pas là pour rien...

    Bon, allé, je suis gentil aujourd'hui... mais la prochaine fois tu lis la FAQ.... ok ?

    http://java.developpez.com/faq/java/...on#creationJar


Discussions similaires

  1. Problème de routage
    Par Baldbull dans le forum Chez soi
    Réponses: 1
    Dernier message: 14/12/2008, 18h06
  2. Problème de routage
    Par zenux dans le forum Développement
    Réponses: 0
    Dernier message: 02/07/2008, 14h27
  3. [Migration 2003 - 2007] problème de routage des mails
    Par nicoda dans le forum Exchange Server
    Réponses: 0
    Dernier message: 15/01/2008, 12h03
  4. [MVC] Problème de routage
    Par Bast_ dans le forum MVC
    Réponses: 9
    Dernier message: 11/10/2007, 13h57
  5. Problème de routage
    Par boubajazz dans le forum Réseau
    Réponses: 8
    Dernier message: 18/06/2007, 10h40

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