¿Cómo devolver la salida del archivo jar a ProcessBuilder?

Estoy ejecutando un archivo jar simple usando el generador de procesos. El archivo jar simplemente calcula el cuadrado de un número pidiéndole al usuario que ingrese un número. Puedo ingresar un número en la consola pero el programa se cuelga. ¿Cómo puedo pasar este (número) de vuelta al generador de procesos para que su cuadrado sea calculado por el archivo jar?

Aquí está mi código para esto:

public static void executeSystemCommand(String... args) {
try {
    ProcessBuilder pb = new ProcessBuilder(args);

    pb.redirectErrorStream(true);           
    Process proc = pb.start();
    Reader reader = new InputStreamReader(proc.getInputStream());

    int ch;
    while ((ch = reader.read()) != -1) {
        System.out.print((char) ch);    
    }

    reader.close();
    Scanner scan = new Scanner(System.in);

    int k = scan.nextInt();
    proc.getOutputStream().write(k);
    proc.getOutputStream().close();

    while ((ch = reader.read()) != -1) {
        System.out.print((char) ch);    
    }

    reader.close();
} catch (IOException e) {
    e.printStackTrace();
    System.exit(-1);
}
}
Respuesta 1

Aquí hay un código que ingresa una cadena b al archivo jar y devuelve una lista de matrices de booleanos en función de la salida recibida del archivo jar.

public ArrayList<Boolean> pro(String b) throws IOException, Exception {
        ArrayList<Boolean> ar = new ArrayList<Boolean>();
        try {
            ProcessBuilder pb = new ProcessBuilder("java", "-jar",
                    "myjar.jar");

            pb.directory(new File("path to myjar"));
            Process proc = pb.start();

            Scanner in = new Scanner(proc.getInputStream());
            PrintWriter out = new PrintWriter(proc.getOutputStream());

            // Read user input
            out.println(b);
            out.flush();
            String response = new String();

            // Read the response
            for (int i = 0; i < b.length(); i++)
                response = in.nextLine();

            in.close();
            out.close();

            StringTokenizer st = new StringTokenizer(response);
            while (st.hasMoreTokens()) {
                String bol = st.nextToken();

                if (bol.equals("true"))
                    ar.add(true);
                else
                    ar.add(false);

            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return ar;
    }
Respuesta: 2

Extraigo datos de un archivo línea por línea en una base de datos y no puedo encontrar una manera adecuada de marcar las líneas que ya he leído en mi base de datos. Tengo el siguiente código que uso para iterar ...

Tengo una lista agregada a mi applet con foco. En handleEvent, proceso todas las pulsaciones de teclas. Realizo acciones en las teclas. Cuando las teclas son teclas de flecha, la lista también salta por todas partes. Esta ...

Suponiendo que tengo cuatro niveles en mi árbol XML, donde el nivel 3 puede tener el mismo hijo, dos veces, es decir, en el siguiente XML: <Game> <Round> <roundNumber> 1 </ ...

Esta es la primera vez que programo y me cuesta entender qué se debe hacer con los comandos mysql y qué se debe hacer con Java (estoy programando la base de datos con Java porque no ...