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):
codice:
#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;
}
Lo stesso programma di echo scritto in pascal
codice:
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.
Ed infine il codice Java del programma che avvia uno dei due programmi scritti sopra
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.