如题,正在想办法通过java实现一个带控制台功能的小模块,目标是可以通过一个命令(如最简单的java -jar x.jar)启动一个文件,并在cmd输出此文件的log,同时,可以让用户输入命令以进行交互
这是我曾试过的一个思路
public class Main {
public static void main(String[] args) throws IOException {
Test();
}
public static void Test() throws IOException {
Process process = Runtime.getRuntime().exec("C://container/jdk-17.0.2/bin/java.exe --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED --show-module-resolution -jar server.jar");
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader inputBufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder=new StringBuilder();
String line;
while ((line = inputBufferedReader.readLine()) != null) {
stringBuilder.append(line);
System.out.println(line);
}
inputBufferedReader.close();
inputStreamReader.close();
inputStream.close();
}
}
但是,无法输入命令,而且指定文件输出的log也没有正确被显示出来
指定文件:github.com/Tinylake/mindustryX/releases
希望有人帮帮忙
不要简单的调用Runtime.getRuntime().exec
Process 类里有Process.Start方法,可以让你传入参数
你需要设置输入输出重定向到管道,以便于你的程序给它发送指令