varios error encontrado ejecutar desde comandos clase cargado java terminal runtime execution

error - ejecutar varios comandos cmd desde java



Error al intentar ejecutar un comando en java (1)

Entonces, parece que el problema que tienes es que no entiendes por qué obtienes resultados diferentes cuando invocas el programa de diferentes maneras.

Esto es lo que está pasando: Runtime.geRuntime().exec() crea un nuevo proceso, que es hijo del padre. Cada proceso tiene su propio directorio de trabajo; cuando bifurca un nuevo proceso, hereda el directorio de trabajo del padre. Invocar cd cambiará el directorio de trabajo del proceso actual (y esto es un shell incorporado, pero ignóralo por ahora y lo abordaré más adelante).

Entonces, lo que estás haciendo es esto:

Padre

-> crear hijo 1 -> cambiar el directorio de trabajo del hijo 1

-> crear hijo 2 -> invocar "ls"

Tenga en cuenta que el hijo 2 heredará el directorio de trabajo de su padre. No sabrá nada sobre el directorio de trabajo del hijo 1. Entonces, dependiendo del directorio de trabajo del proceso que está invocando este método (en su caso, ya sea el terminal o ... No sé, ¿su instalación JDK? ) obtendrá diferentes resultados.

Si quiere los mismos resultados cada vez, podría hacer algo como esto:

Process p = Runtime.getRuntime().exec( "ls /Users/apple/Documents/Documents/workspace/UserTesting/src" );

Y si quiere ejecutar su programa desde cualquier lugar, solo use la ruta completa:

Process p = Runtime.getRuntime().exec( "java /Users/apple/Documents/Documents/workspace/UserTesting/NewFile" );

(suponiendo, por supuesto, que ya haya utilizado javac para compilar NewFile.class en ese directorio y que tenga los permisos adecuados para ejecutarlo).

Re: cd , como mencioné antes, este es un comando que está integrado en tu caparazón. Cuando invocas el comando usando exec de esta manera, es probable que falle. Puede verificarlo leyendo el error estándar utilizando el método getErrorStream() de Process .

Esta pregunta ya tiene una respuesta aquí:

Estoy intentando ejecutar un archivo java usando el terminal pero desde Java. Es decir, ejecutaré el comando usando java. Estoy intentando ejecutar el comando ''cd / Users / apple / Documents / Documents / workspace / UserTesting / src'' que redirige al siguiente directorio y luego ejecuto el comando ''ls'' que enumera todos los archivos en el directorio actual

Estoy usando este método para ejecutar el archivo Java ''NewFile.java''

try { String line; Process p = Runtime.getRuntime().exec( "cd /Users/apple/Documents/Documents/workspace/UserTesting/src" ); Process p2 = Runtime.getRuntime().exec( "ls" ); BufferedReader in = new BufferedReader( new InputStreamReader(p2.getInputStream()) ); while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); } catch (Exception e) { // ... }

La salida

Directamente usando el terminal -> Da ''NewFile.java''

Usando este método usando Java -> Siempre da ''bin'' y ''src'' para cualquier comando dado a p2

Aquí hay varios ensayos

Apples-MacBook-Pro: ~ apple $ cd / Users / apple / Documents / Documents / workspace / UserTesting / src Apples-MacBook-Pro: src apple $ java NewFile 5 90 35 45 150 3
Reichweite ---- nach blase art
3 5 35 45 90 150

Apples-MacBook-Pro: src apple $ java / Users / apple / Documents / Documents / workspace / UserTesting / src / NewFile Excepción en el hilo "main" java.lang.NoClassDefFoundError: / Users / apple / Documents / Documents / workspace / UserTesting / src / NewFile Causado por: java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile en java.net.URLClassLoader $ 1.run (URLClassLoader.java:202) en java.security. AccessController.doPrivileged (método nativo) en java.net.URLClassLoader.findClass (URLClassLoader.java:190) en java.lang.ClassLoader.loadClass (ClassLoader.java:306) en sun.misc.Launcher $ AppClassLoader.loadClass (Launcher. java: 301) en java.lang.ClassLoader.loadClass (ClassLoader.java:247)

Apples-MacBook-Pro: src apple $ java /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile.java Excepción en el hilo "main" java.lang.NoClassDefFoundError: / Users / apple / Documents / Documents / workspace / UserTesting / src / NewFile / java Causado por: java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile.java en java.net.URLClassLoader $ 1.run (URLClassLoader.java:202 ) en java.security.AccessController.doPrivileged (método nativo) en java.net.URLClassLoader.findClass (URLClassLoader.java:190) en java.lang.ClassLoader.loadClass (ClassLoader.java:306) en sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) en java.lang.ClassLoader.loadClass (ClassLoader.java:247) Apples-MacBook-Pro: src apple $ Blockquote