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 :

Chemin de commande Windows avec java


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut Chemin de commande Windows avec java
    Bonjour,
    J'ai exécuté la commande "blender -P LeChemin/scripte.py" dans un programme java et ça marche bien.
    j'ai copié le fichier scripte.py dans un dossier scripte dans mon package java mais qu'on j’exécute la commande "blender -P scripte/scripte.py" ça marche pas.
    Pouvez vous m'aider svp?
    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Bonjour,
    Quel est le dossier courant pour la commande Blender ? Si ce n'est pas le dossier parent de scripte, c'est normal que ça ne marche pas, puisque scripte/scrypte.py est un chemin relatif.
    Est-ce que le dossier scripte a été packagé dans un jar ? Si oui, c'est encore pire car Blender devrait alors savoir accéder à un dossier à l'intérieur d'un fichier jar.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse.
    Oui le dossier scripte est dans le jar.
    Comment je peux résoudre ça svp?

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par zsoufianz Voir le message
    Oui le dossier scripte est dans le jar.
    Je doute fortement que l'application "blender" puisse aller lire directement le fichier dans le jar.
    Et même si c'était le cas il faudrait lui préciser le nom de ce jar (ce qui n'est pas le cas dans la ligne de commande).

    Il faut extraire le fichier du jar...


    a++

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut
    il faut extraire le fichier du jar... et quoi dautres stp?

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Par exemple :

    1. S'assurer de la présence de Blender sur le système hôte.
    2. Créer un répertoire temporaire
    3. Y extraire le script.
    4. Faire tourner la commande.
    5. Récupérer les résultats s'il y en a.
    6. Puis, si possible, effacer ce qu'il n'est pas nécessaire de conserver.


    Chaque sous-étape pouvant soulever son propre lot d'erreur et d'exceptions.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse. J'ai vérifie tout ces points.
    Mon scripte marche bien mais quand j'export le fichier jar et je le mis dans un autre PC, je reçois l'erreur de chemin.
    J'ai crée un dossier dans mon package ou il y a le scripte python qui va tourner dans blender mais aussi le problème du chemin.
    y a t il moyen d'écrire cette commande ("blender -P LeChemin/scripte.py") d'une autre manière?
    mon programme marche juste sur le chemin suivant:
    Process p = Runtime.getRuntime().exec("blender -P C:/Users/admin/workspace/Application/src/scripte/scripte.py" );
    et il marche pas comme suite:
    Process p = Runtime.getRuntime().exec("blender -P scripte/scripte.py" );

  8. #8
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Lorsque tu utilises la commande "blender -P scripte/scripte.py", tu dis à blender de chercher le fichier scripte.py sur ton disque, dans le repertoire relatif scripte/. Autrement dit, si ton jar est dans c:\temp, ton fichier doit etre c:\temp\scripte\scripte.py.
    Maintenant, le probleme, c'est que dans ton cas, le fichier est dans le jar, pas sur ton disque. La premiere étape est donc de créer le repertoire scripte (s'il n'existe pas). Ensuite, extraire le fichier scripte.py dedans. Pour finir, tu peux lancer ta commande.

    Pour info, pour créer un repertoire, il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    File f = new File("scripte/");
    if (!f.exists())
    {
       f.mkdir();
    }
    Pour extraire un fichier de ton jar (d'apres le chemin que tu as posté), il faut faire (pour simplifier, je ne met pas de gestion d'exception) :
    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
    File f = new File("scripte/scripte.py");
    if (!f.exists())
    {
       // Note que le chemin du fichier commence bien par /. Ce chemin est le bon d'apres ce que tu as poste
       InputStream ressource = (getClass().getResourceAsStream("/scripte/scripte.py"));
       OutputStream writer = new BufferedOutputStream(new FileOutputStream(f));
       byte[] buffer = new byte[1024 * 4];
       int length;
       while ((length = ressource.read(buffer)) >= 0)
       {
          writer.write(buffer, 0, length);
       }
       writer.close();
       resource.close();
    }

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Utiliser des try with resource !!!!!!!!!!!!!!!!!!!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try (InputStream ressource = getClass().getResourceAsStream("/scripte/scripte.py");
       OutputStream writer = new BufferedOutputStream(new FileOutputStream(f))) {
       byte[] buffer = new byte[1024 * 4];
       int length;
       while ((length = ressource.read(buffer)) >= 0)
       {
          writer.write(buffer, 0, length);
       }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup
    Mais comment je peux protéger mon scripte contre l’écriture et la lecture stp?

  11. #11
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Tu ne peux pas.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par zsoufianz Voir le message
    Mais comment je peux protéger mon scripte contre l’écriture et la lecture stp?
    Tu peux utiliser le systeme de l'OS. Mais le plus sur, c'est d'effacer puis ecrire le fichier. Comme ca, tu es sur de ton coup
    Et si tu ne veux pas qu'il puisse etre le, tu peux l'effacer apres utilisation. Ceci étant dit, tu ne peux pas eviter que le fichier soit présent pendant le temps d'execution.

  13. #13
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    Tu ne peux pas eviter que le fichier soit présent pendant le temps d'execution.
    D'ou ma remarque
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par wax78 Voir le message
    D'ou ma remarque
    Que je n'ai pas contredite
    En fonction de l'OS, on peut peut etre contourner ca en utilisant un user particulier seul a pouvoir lire le fichier en question mais bon, c'est probablement beaucoup d'efforts pour pas grand chose.

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Une autre solution serait de passer directement le script dans l'entrée standard du process.
    Apparemment c'est ce que fait l'option --python-console de blender (à vérifier je ne peux pas tester)


    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
    	Process process = new ProcessBuilder("blender", "--python-console")
    			.redirectOutput(Redirect.INHERIT) // stdout dans la console
    			.redirectError(Redirect.INHERIT) // stderr dans la console
    			.start();
     
    	try (InputStream input = getClass().getResourceAsStream("/scripte/scripte.py");
    			OutputStream output = process.getOutputStream()) {
    		byte[] buffer = new byte[1024 * 4];
    		int length;
    		while ((length = input.read(buffer)) >= 0) {
    			output.write(buffer, 0, length);
    		}
    	}
     
    	int result = process.waitFor(); // si on doit attendre la fin du process
    Au passage Runtime.exec() est plutôt obsolète, et il est préférable de passer par ProcessBuilder pour créer un Process.


    a++

Discussions similaires

  1. Lancer des commandes windows avec Flex
    Par Space23 dans le forum Flex
    Réponses: 4
    Dernier message: 21/08/2009, 16h39
  2. chemin d'un fichier avec java
    Par empire.dev dans le forum Entrée/Sortie
    Réponses: 30
    Dernier message: 29/08/2008, 19h40
  3. Exécution de commande Windows avec Telnet
    Par blackstreet dans le forum Réseau
    Réponses: 2
    Dernier message: 02/02/2007, 13h38
  4. [Système]Service windows avec java
    Par stephpr44 dans le forum Général Java
    Réponses: 4
    Dernier message: 24/11/2005, 20h50

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