Error al utilizar Runtime.getRuntime (). Método exec para invocar un exe, si exe camino tiene caracteres no ingleses

StackOverflow https://stackoverflow.com/questions/4105280

  •  29-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando Runtime.getRuntime.exec () Método para invocar un exe. El problema lo que la cara con este método es que cuando paso un poco de trayectoria exe (c: \ JPN_char_folder \ miruta \ myexe.exe). Con otros caracteres de idioma (ex.Japanese) "Es decir 'El sistema no puede encontrar el archivo especificado' sería por favor sugerir algunas ideas para evitar esto? incluso he intentado pasar ese camino exe después de la conversión a UTF-8, así, pero aún así no se podía solucionar esto.

-Robert.

¿Fue útil?

Solución

No creo que los caracteres japoneses son el problema; es el directorio c:. la unidad

Usted tiene que escribir de esta manera:

String path = "c:\\\JPN_char_folder\\mypath\\myexe.exe";

A ver si eso ayuda.

Otros consejos

Lo más probable es que tienen un problema en alguna parte de codificación.

Hay varios pasos aquí que el valor de la ruta toma:

  • InstallAnywhere recupera la ruta
  • InstallAnywhere pone en una variable
  • Java lee la variable
  • Java pone en una cadena
  • Java crea una instancia java.io.File de cadena
  • ejecución Java pasa ruta (a través de Archivo) para OS

Somehwere lo largo de esta secuencia algo va mal con el camino: -. (

Es difícil decir dónde; Probablemente la mejor opción es tratar de imprimir el valor en cada paso a lo largo del camino, a ver a dónde va mal.

Por lo menos desde el interior de Java, probablemente debería imprimir la cadena tanto como texto, y como una lista de puntos de código Unicode (usando String.codePointAt). De esa manera usted puede ver los usos de Java de datos reales.

Otro enfoque:

  • Imprima el valor de Java recibe de InstallAnywhere (como texto y como puntos de código, como el anterior)
  • Trate de poner la ruta en su programa Java como un literal de cadena, y el violín hasta que pueda abrir el archivo de esa manera. A continuación, imprima esa cadena también.

Ahora usted puede comparar los dos resultados; Eso te dará una idea donde el camino se cometa un error. Nota:

¿La ruta contiene caracteres fuera del plano multilingüe básico (BMP)? Java se encarga de estas un poco incómodo, por lo que es necesario prestar una atención especial. Tal vez se puede comprobar esto en primer lugar.

Incluso si se está utilizando Windows, puede utilizar las barras al especificar directorios. Esto le ayudará a escapar del infierno barra invertida.

Por ejemplo, en mi sistema, 7z se encuentra en c:\Program Files\7-Zip\ directorio.

La ejecución de este

File file = new File("c:/Program Files/7-Zip/7z.exe");

if(file.exists()) {
    System.out.println(file.getAbsolutePath());
}

Los resultados en

c:\Program Files\7-Zip\7z.exe

se imprime en la consola.

Te sugiero que intente utilizar este lenguaje, es decir, comprobar si las salidas de archivos .exe antes de intentar ejecutarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top