这就是我想要做的事情:
我需要从java文件中启动两个jar文件,并且我想从第一个启动的jar文件中调用一个方法,当我从第二个jar文件中读取特定状态时。我想出了如何从jar文件中读取outsputstream。 (我也知道,它不是打印出来的jar文件,而是jar文件中的类。我只是用这种方式来解释我用一个java文件来启动两个jar文件)
long l = System.currentTimeMillis();
Process theProcess1 = Runtime.getRuntime().exec("java -jar \"C:/test.jar\"");
inStream = new BufferedReader(new InputStreamReader( theProcess1.getInputStream() ));
...
我现在可以读取jar文件的输出。
在一个特殊的关键字上,我希望第一个启动的jar运行某个方法(非静态)。
e.g:
if(theProcess2 output a certain statuscode)
{
start a certain Method from executed jar file "in" theProcess1
}
我认为可以使用theProcess1输出,但我不知道如何在jar文件中读取此流。 (jar文件不知道它是通过java文件启动的。
任何想法?
答案 0 :(得分:1)
您无法访问其他java进程类加载器类定义。 有关如何正确加载jar的信息,请参阅此问题:How to load a jar file at runtime
加载jar后,可以使用Class.forName访问第二个jar所需的类
编辑: 这是一个帮助您阅读过程标准输出的小片段。
//open a buffered reader on process std output
InputStreamReader ir = new InputStreamReader(theProcess1.getInputStream());
BufferedReader in = new BufferedReader(ir);
//read it line per line
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}