8
votes

Comment changer System.getProperty ("utilisateur.dir") à Project Workspace

J'essaie de lire une ligne de fichier .txt par ligne dans mon code, que je l'ai placée juste sous le répertoire / src / , lorsque je l'exécute avec un boîtier de test ou avec un vide statique principal , la sortie du chemin est correcte. Cependant, lorsque j'exécute l'application avec Tomcat Server, le chemin racine de l'application indique où je télécharge mon éclipse - d: \ eclipse \ ... , tandis que le chemin correct doit être D: D: D: \ Workspace \ myProject \ src \ . Ensuite, bien sûr, il ne peut jamais trouver le fichier.

ci-dessous est mon code: xxx

donc, mes questions sont les suivantes:

  1. (ceci peut-être idiot) où devrions-nous normalement placer un fichier texte?
  2. Comment puis-je modifier [ system.geproperty ("user.dir"); ], il va donc indiquer mon espace de travail de projet?

    merci!

    Sharon


    Concernant votre réponse:

    Ajouter après arguments -Duser.home = "Votre chemin" Assurez-vous d'ajouter -D au début de la variable de votre système. Et cette variable que vous pouvez placer dans la zone d'arguments VM fournie dans l'onglet Arguments lorsque vous ouvrez la configuration de lancement lors de l'utilisation de Tomcat Server.

    Je ne trouve pas l'endroit dont vous parlez. Est-ce dans le répertoire Eclipse ou Tomcat?

    Merci


2 commentaires

Dupliqué possible de Changer le répertoire de travail actuel de Java?


Merci pour vos réponses. 1. J'ai essayé cela.getclass (). GetClassloader (). Getresourceastream ("Filena Me.txt"); => Cela renvoie null. Je suppose que cela ne peut tout simplement pas trouver le fichier. 2. AS @ eng.fouad's Réponse: Ceci est juste une solution de ma faute de frappe, oui, j'avais besoin d'un fichier supplémentaire "/" myfile = nouveau fichier (workDir + "/" + fichier); Cependant, cela ne fonctionnera toujours pas parce que j'ai toujours le problème que le "WorkDir" lors de la course avec Tomcat, sera dirigé vers D: \ Eclipse. Pourquoi Tomcat Server pense-t-il que mon espace de travail est sous D: \ Eclipse? Il a dû être placé quelque part. Aider! Je ne peux tout simplement pas trouver la réponse. Google pendant des jours. Merci!


5 Réponses :


9
votes

essayer fichier myfile = nouveau fichier (workDir, fichier);


0 commentaires

0
votes

Essayez de ne pas modifier les propriétés du système, ajoutez plutôt un paramètre de plus dans les propriétés du système.

pour par exemple. Ajouter les arguments suivants -duser.home = 'Votre chemin' Assurez-vous d'ajouter -D au début de la variable de votre système. Et cette variable que vous pouvez placer dans la zone d'arguments VM fournie dans l'onglet Arguments lorsque vous ouvrez la configuration de lancement lors de l'utilisation de Tomcat Server.

Et si vous faites de la même manière à partir d'une méthode principale, ajoutez la vaire de la configuration d'exécution, car cela maintiendra la sacté dans votre code.


3 commentaires

1) 'utilisateur.home' est la mauvaise propriété. 2) Cela ne fonctionnera pas de toute façon; voir ma réponse.


@Stephen: Pourquoi la mauvaise propriété? Je peux créer mes propres variables système, lorsque je n'ai pas besoin d'utiliser les propriétés du système existantes, que je ne peux créer le mien.


Ah. J'entends ce que vous dites. (Votre réponse serait plus facile à lire s'il était correctement ponctué !!!). Quoi qu'il en soit, vous avez choisi une propriété déjà utilisée par la JVM pour signifier quelque chose de différent; Voir le javadoc pour system.geproperties () . De plus, vous devez toujours coder le WebApp pour respecter la valeur de la propriété, car il suffit de définir la propriété n'aura aucun effet.



1
votes

Pour lire des fichiers de la racine de l'utilisation de la classe de classe (Eclipse copie automatiquement tout fichier non Java de SRC en classes): xxx

de sorte que vous n'avez pas à vous désordre avec le dossier actuel du tout.


0 commentaires

5
votes

La réponse courte est que vous ne pouvez pas modifier le répertoire de travail actuel d'une application d'exécution en Java; Voir Changer le répertoire de travail actuel de Java?

Définition de la propriété user.dir ne fonctionne pas, car cela n'affecte pas le répertoire actuel réel que le système d'exploitation utilise lors de la résolution des chemins de chemin pour l'application. < / p>

Réglage du -Duser.dir sur la ligne de commande ne fonctionnera pas non plus. Plutôt, vous devez:

  • Si vous lancez à l'aide d'un script, CD dans le répertoire correspondant avant d'exécuter l'application,
  • Si vous lancez à l'aide d'un ProcessBuilder , définissez le répertoire de travail à l'aide du répertoire (fichier) méthode, ou
  • Si vous utilisez un lanceur Eclipse, définissez le "répertoire de travail" dans la configuration de lancement.

    Enfin, qu'est-ce que vous essayez de faire est (imo) une mauvaise idée:

    • Certaines personnes écrivent des fichiers de configuration Tomcat et WebApp sur l'hypothèse selon laquelle le répertoire actuel de Tomcat est l'emplacement par défaut; par exemple. $ catalina_home / bin . (C'est faux ... mais votre hack va le casser.)
    • Lorsque votre demande passe en production, vous ne voudrez pas renvoyer à une boîte de sable de développement.

      Une meilleure approche consiste à faire quelque chose sur les lignes de la réponse de @ eng.fouad.


0 commentaires

3
votes

OK! Je l'ai eu!

oui, xxx

est le moyen d'aller. et je modifie l'argument de Tomcat à Eclipse IDE. (Run -> Exécuter Config ... -> Apache Tomcat -> [Cliquez sur] Tomcat VX Server -> à l'écran droit, cliquez sur "Argument" -> Section de la répertoire de travail -> Je passe à d'autres personnes et spécifiez mon répertoire de travail. )

C'est juste bizarre que même je courais tomcat non pas par Eclipse IDE, mais DOS CMD et même déployé sur serveur, il applique toujours le répertoire de travail comme D: \ Eclipse. Mais changer de toute façon le répertoire de travail.


1 commentaires

Bienvenue dans le débordement de la pile! Depuis Eng.fouad a donné cette réponse Il serait poli de L'accepter comme correct . Il serait également poli de donner des votes utiles à toutes les réponses que vous avez trouvées utiles. Merci.