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.