Erreur: Causée par: java.io.IOException: CreateProcess d'erreur=2, Le système ne peut pas trouver le fichier spécifié. S'applique pour tous les exécutables

Mon but est d'exécuter des commandes SVN de java pour l'un de mes exigences, de même que j'ai déjà installé TortoiseSVN outil de ligne de commande. Ajoutée le chemin d'accès approprié"C:/Program les Fichiers"/TortoiseSVN/bin" à mon environnement variable "Path".

Avec la configuration ci-dessus, je peux utiliser mon svn commandes de ligne de commande de windows à l'aide de dire "svn --version" et il fonctionne parfaitement bien.

Maintenant de retour pour le code à exécuter le même, je suis en utilisant processbuilder pour cela. Cependant, je me retrouve avec l'erreur ci-dessus - java.io.IOException: Impossible d'exécuter le programme "svn --version": CreateProcess d'erreur=2, Le système ne peut pas trouver le fichier spécifié.

J'ai essayé de suivre les choses déjà,

  1. À L'Aide De ProcessBuilder.environnement vérifié le Chemin et le CHEMIN des valeurs. Chemin d'accès est emply, mais le CHEMIN a tous les chemins d'accès des applications configurées, y compris la "TortoiseSVN/bin" chemin d'accès. Donc, qui efface la théorie de la ProcessBuilder pas exécutable emplacement dans son chemin.

  2. Lors de l'exécution, au lieu de simplement svn --version, j'ai essayé de donner le chemin d'accès complet c'est à dire "C:/Program Files/TortoiseSVN/bin/svn.exe". Cela aussi a donné le même message d'erreur.

  3. J'ai essayé le même code pour les autres exécutables comme "java -version" qui trop a échoué avec la même exception.

J'ai maintenant un sentiment de quelque chose de très basique n'est pas droit. Mais a essayé de frapper ma tête autour de cela pour plus d'un jour maintenant, mais je n'est pas d'obtenir des indices.

Ok encore une chose, je suis en cours d'exécution ce sur Windows 7 boîte.

Ci-dessous le code que j'utilise,

    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class RunningExecutable {

public static void main(String[] args){
    String command = "svn --version";

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    try {           
        ProcessBuilder svnProcessBuilder = new ProcessBuilder(command);
        String PATH = svnProcessBuilder.environment().get("PATH");
        System.out.println("PATH - " + PATH);

        String path = svnProcessBuilder.environment().get("Path");
        System.out.println("Path - " + path);

        Process procObject = svnProcessBuilder.start();

        BufferedReader cmdStreamReader = new BufferedReader(new InputStreamReader(procObject.getInputStream()));
        String cmdOutput;
        while ((cmdOutput = cmdStreamReader.readLine()) != null) {
            outputStream.write((cmdOutput + "\n").getBytes());
        }
        System.out.println("O/p - " + outputStream.toString());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Throwable th) {
        th.printStackTrace();
    }
}
    }

Hâte de tous les conseils/pointeurs.

Grâce,
Vicky

OriginalL'auteur Vicky | 2012-03-10