Sto lavorando su un semplice programma java. Compila semplicemente ed esegue un altro programma java. Sto usando la funzione Runtime.exec() per compilare ed eseguire. Non ci sono problemi con la compilazione. ma quando gira, se il secondo programma ha bisogno di un input per leggere dalla tastiera, non posso darlo dal processo master. Ho usato la funzione getOutputStream(). ma non poteva aiutare. Fornirò il mio codice.Esecuzione di un programma java da un altro programma java
public class sam {
public static void main(String[] args) throws Exception {
try {
Process p = Runtime.getRuntime().exec("javac sam2.java");
Process p2 = Runtime.getRuntime().exec("java sam2");
BufferedReader in = new BufferedReader(
new InputStreamReader(p2.getInputStream()));
OutputStream out = p.getOutputStream();
String line = null;
line = in.readLine();
System.out.println(line);
input=input+"\n";
out.write(input.getBytes());
p.wait(10000);
out.flush();
}catch (IOException e) {
e.printStackTrace();
}
}
}
Questo è il mio programma principale (sam.java).
Quello che segue è il codice di sam2.java
public class sam2 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Enter the number..\n");
str = br.readLine();
System.out.println(Integer.parseInt(str));
}
}
non c'è nessun problema, se il mio secondo programma ha solo dichiarazioni di stampa. Ma il problema sorge quando devo leggere qualcosa dall'altra.
si dovrebbe fare una specie di pipe dallo STDIN di sam a sam2 ma questo potrebbe essere più difficile che valga la pena. –
Si prega di imparare le convenzioni di denominazione java e attenersi ad esse, qui: i nomi delle classi dovrebbero iniziare con una lettera maiuscola. – kleopatra
stavo cercando di presentare un semplice esempio. grazie per il tuo consiglio .. :) – BBHeeMAA