2011-07-13 61 views
11

¿Qué tipo de problema podría hacer que el método ProcessBuilder.start de Java devuelva una IOException con una nota que diga error = 5?Causas posibles de java.io.IOException: CreateProcess error = 5

Específicamente, hemos visto un sistema remoto al cliente ejecutando algún código Java en la línea de ...

ProcessBuilder pb = new ProcessBuilder(cmdArray); 
pb.redirectErrorStream(true); 
Process p = pb.start(); 

... lanzar excepciones como esta ...

java.io.IOException: CreateProcess: C:\example\example.exe argument1 argument2 error=5 
at java.lang.ProcessImpl.create(Native Method) 
at java.lang.ProcessImpl.<init>(Unknown Source) 
at java.lang.ProcessImpl.start(Unknown Source) 
at java.lang.ProcessBuilder.start(Unknown Source) 
at example_code_above 

Nosotros han confirmado que el comando indicado en la excepción, "C: \ example \ example.exe argument1 argument2" se puede ejecutar con éxito a mano a través de cmd.exe, por lo que estamos seguros de que el comando en sí no está roto.

+2

Puede ser que el error 5 sea para "Acceso denegado". (No estoy seguro) –

+0

Tengo el mismo problema en Android http://stackoverflow.com/questions/39245238/errorcreateprocess-error-193-1-is-not-a-valid-win32-application –

Respuesta

11

error=5 significa uno de: archivo

1) no es ejecutable
2) archivo no es accesible

EDITAR: suele excepción tiro
3) el comando (ejemplo.exe) salidas con código de salida 5

+0

Gracias - ¿Me puede decir dónde? esa información está disponible para futuras referencias? –

+0

[Códigos de salida predefinidos de Windows] (http://en.kioskea.net/faq/2347-error-codes-in-windows) y un poco de experimentación con ProcessBuilder para varios casos –

+4

Tuve este error en Windows 7 también . La razón ?Básicamente, he intentado ejecutar una carpeta en lugar de un archivo ejecutable: \ Dumb error – Stephan

1

Tengo la misma excepción debido a Windows UAC.

Esto puede suceder incluso si su cuenta tiene privilegios de administrador.

Para poder ejecutar dicho comando tuve que usar powershell para elevar los privilegios.

powershell start-process 'start.bat' -Verb RunAs 
4

Alexandr es correcta, es la seguridad de Windows que no está permitiendo que el proceso se ejecute, pero ese comando PowerShell no funcionó para mí. esto es lo que hice:

  • Abra Windows Explorer y navegue hasta ejemplo.exe
  • Haga clic derecho sobre él y seleccione "Propiedades"
  • Ir a la pestaña "Seguridad" y haga clic en "Editar"
  • botón
  • Seleccione su nombre de usuario en el cuadro de la parte superior y en la inferior dar "control total" o al menos "Leer & ejecutar"
  • Haga clic en OK para deshacerse de estas cajas

Ahora su usuario puede ejecutar ese programa. ¡Hurra!

2

A veces esto sucede porque la ruta que pones en el código no es correcta. Para windows ponga "\\" como un separador de ruta en lugar de "\" Por ejemplo cambie la ruta a "C:\\example\\example.exe"

+0

El escape apropiado es igualmente importante en estas publicaciones. :-) –

Cuestiones relacionadas