Pracuję nad prostym programem java. Po prostu kompiluje i wykonuje inny program java. Używam funkcji Runtime.exec() do kompilowania i uruchamiania. Nie ma problemu z kompilacją. ale gdy zostanie uruchomiony, jeśli drugi program potrzebuje danych wejściowych do odczytu z klawiatury, nie mogę go przekazać z głównego procesu. Użyłem funkcji getOutputStream(). ale to nie mogło pomóc. Podam mój kod.Uruchamianie programu java z innego programu 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();
}
}
}
To jest mój program główny (sam.java).
Poniżej znajduje się kod 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));
}
}
Nie ma problemu, jeśli mój drugi program ma tylko sprawozdania z drukowaniem. Ale problem powstaje, gdy muszę przeczytać coś od drugiego.
musiałbyś zrobić jakiś rodzaj fajki ze STDIN sam do sam2, ale to może być więcej kłopotu niż jego wartość. –
Proszę nauczyć się konwencji nazewnictwa java i trzymać się ich, tutaj: nazwy klas powinny rozpoczynać się wielką literą. – kleopatra
Próbowałem przedstawić prosty przykład. dzięki za twoją radę .. :) – BBHeeMAA