0

这就是我想要做的:

我需要从一个 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 文件启动的。

有任何想法吗?

4

1 回答 1

1

您无法访问另一个 java 进程类加载器类定义。有关如何正确加载 jar 的信息,请参阅此问题:如何在运行时加载 jar 文件

加载 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);

    }
于 2013-04-03T15:01:46.967 回答