2017-08-08 6 views
0

Je suis face au-dessous de l'erreur:Java -> erreur CreateProcess = 2, Le système ne peut pas trouver le fichier spécifié

java.io.IOException: Cannot run program "C:\abc\man\b\manu.bat C:\Users\12x\test\testFiles\abc.properties" (in directory "C:\Users\12x\test\testFiles\abc.properties"): CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048). 

S'il vous plaît trouver le code que je utilise:

public class TestProcess { 


public TestProcess(Path workPath, Path exe, Path logbackConfig, 
        Path propertyfile) throws IOException { 

    String exeSuffix = ""; 
    if (OS.indexOf("win") >= 0) { 
     exeSuffix = ".bat"; 
    } 
    builder = new ProcessBuilder() 
      .directory(workPath.toFile()) 

      .command(workPath.resolve(exe).toAbsolutePath().toString() + exeSuffix+ " " + propertyfile) 
      .redirectOutput(Redirect.INHERIT) 
      .redirectError(Redirect.INHERIT); 

Mon but est pour exécuter un fichier bat (qui est présent dans le dossier C: \ abc \ man \ b) suivi de abc.properties (qui se trouve dans un autre dossier C: \ Users \ 12x \ test \ testFiles).

Dans le code ci-dessus, Workpath a la valeur

C:\abc\man\b 

et propertyfile a

C:\Users\12x\test\testFiles 

Répondre

-1

Vous ne pouvez pas exec() un fichier .bat directement dans Windows. Vous devez interposer cmd /c.

0

Vous n'utilisez pas la syntaxe correcte: vous ne pouvez pas concaténer le programme et ses arguments dans une chaîne, puisque ProcessBuilder n'est pas un analyseur.

Au lieu de cela, construire une chaîne nommée propertyfile_path_string correspondant aux fichier de propriétés, et remplacer votre ligne .command(...) par celui-ci:

.command(workPath.resolve(exe).toAbsolutePath().toString() + exeSuffix, propertyfile_path_string) 
+0

J'ai essayé, mais on m'a donné ci-dessous erreur: –

+0

La commande de la méthode (Liste ) dans le type ProcessBuilder n'est pas applicable pour les arguments \t (Chaîne, chemin) –

+1

@sandeepgoyal Donc, utilisez 'propertyfile.toString()'. – EJP