Ottengo questo errore
![]()
quando provo ad eseguire (con netbeans, da shell non ottengo errore ma si pianta la shell) un programma di test scritto in C o in Pascal con le funzioni Runtime.getRuntime().exec(cmd) o come nell'esempio utilizzando il ProcessBuilder. Voglio sottolineare il fatto che se provo a lanciare programmi come calc.exe o cmd.exe funziona tutto bene!
Per chi volesse provare, questi sono i sorgenti dei vari programmi che ho utilizzato:
Codice del programma C (simula una shell di echo):
Lo stesso programma di echo scritto in pascalcodice:#include <stdio.h> int main () { char input[100]; int cond=1; while (cond) { printf("Prompt: "); scanf("%s", input); printf(" > Output: %s\n\n", input); if (strcmp(input,"quit")==0) cond=0; } return 0; }
Ed infine il codice Java del programma che avvia uno dei due programmi scritti sopracodice:program progPascal; var input : string[100]; cond : boolean; begin cond := true; while cond do begin write('Prompt: '); readln(input); writeln(' Output: ', input); writeln; if input = 'quit' then cond := false; end end.
codice:import java.io.*; public class Test { public static void main (String[] args) { if (args.length < 1) { System.out.println("Use: java Test <program.exe>\n\n"); System.exit(0); } ProcessBuilder builder = new ProcessBuilder(args[0]); // NB: percorso assoluto try { Process p = builder.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); PrintWriter writer = new PrintWriter(new OutputStreamWriter(p.getOutputStream())); String line; // Read output while ((line = reader.readLine()) != null) { System.out.println(line + "\n"); } // Write something writer.write("Hello!\n"); writer.flush(); // Read output while ((line = reader.readLine()) != null) { System.out.println(line + "\n"); } reader.close(); writer.close(); // destroy the process p.destroy(); } catch (Exception ex) { ex.printStackTrace(); } } }
Ho un estremo bisogno di aiuto o di spiegazioni.
Altrimenti suggeritemi qualche metodo alternativo per costruire interfacce (che non sia inserire il codice dell'eseguibile nell'interfaccia).
Se qualcuno può provarlo e postare se funziona, magari capisco che è un problema di qualche libreria o altro.
Vi ringrazio in anticipo.

Rispondi quotando