这就是我想要做的:
我需要从java文件中启动两个jar文件,并且当我从第二个jar文件中读取特定状态时,我想从第一个启动的jar文件中调用一个方法。我知道了如何从jar文件中读取输出流。(我还知道,打印的不是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运行某个方法(非静态)。
例如:
if(theProcess2 output a certain statuscode)
{
start a certain Method from executed jar file "in" theProcess1
}我认为可以通过使用theProcess1输出来实现,但是我不知道如何在jar文件中读取这个流。( jar文件不知道它是通过java文件启动的。
有什么想法吗?
发布于 2013-04-03 23:01:47
您不能访问另一个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);
}https://stackoverflow.com/questions/15790842
复制相似问题