Tôi đang làm việc trên một chương trình java đơn giản. Nó đơn giản biên dịch và thực hiện một chương trình java khác. Tôi đang sử dụng hàm Runtime.exec() để biên dịch và chạy. Không có vấn đề gì với việc biên dịch. nhưng khi nó chạy, nếu chương trình thứ hai cần một đầu vào để đọc từ bàn phím, tôi không thể cho nó từ quá trình tổng thể. Tôi đã sử dụng hàm getOutputStream(). nhưng nó không thể giúp được. Tôi sẽ cung cấp mã của tôi.Chạy chương trình java từ một chương trình java khác
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();
}
}
}
Đây là chương trình chính của tôi (sam.java).
Sau đây là mã của 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));
}
}
Không có vấn đề, nếu chương trình thứ hai của tôi chỉ có báo cáo in ấn. Nhưng vấn đề nảy sinh khi tôi phải đọc cái gì đó từ cái kia.
bạn sẽ phải thực hiện một số loại ống từ STDIN của sam đến sam2 nhưng điều đó có thể gây rắc rối nhiều hơn giá trị của nó. –
Hãy tìm hiểu các quy ước đặt tên java và gắn bó với chúng, ở đây: tên lớp sẽ bắt đầu bằng một chữ hoa. – kleopatra
tôi đã cố gắng trình bày một ví dụ đơn giản. cảm ơn cho lời khuyên của bạn .. :) – BBHeeMAA