我需要一种从我的应用程序中运行另一个java应用程序的方法。我想将其输出重新放入JTextArea并通过JTextBox发送输入。
答案 0 :(得分:2)
取决于
您可以使用自定义URLClassLoader
加载第二个应用程序jar并直接调用主类main
方法。显然,问题是得到程序的输出;)
另一个解决方案是使用ProcessBuilder
启动java进程并通过InputStream
这里的问题是试图找到java可执行文件。一般来说,如果它在路径上你应该没事。
您可以查看this作为如何阅读输入流的基线示例
使用示例更新
这是我的“输出”程序,它产生输出......
public class Output {
public static void main(String[] args) {
System.out.println("This is a simple test");
System.out.println("If you can read this");
System.out.println("Then you are to close");
}
}
这是我阅读输入的“读者”程序......
public class Input {
public static void main(String[] args) {
// SPECIAL NOTE
// The last parameter is the Java program you want to execute
// Because my program is wrapped up in a jar, I'm executing the Jar
// the command line is different for executing plain class files
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "../Output/dist/Output.jar");
pb.redirectErrorStream();
InputStream is = null;
try {
Process process = pb.start();
is = process.getInputStream();
int value;
while ((value = is.read()) != -1) {
char inChar = (char)value;
System.out.print(inChar);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
您还可以结帐Basic I/O了解更多信息