首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Runtime...exec("..")加载的已启动jar文件的触发方法在java文件中

通过Runtime...exec("..")加载的已启动jar文件的触发方法在java文件中
EN

Stack Overflow用户
提问于 2013-04-03 22:56:47
回答 1查看 399关注 0票数 0

这就是我想要做的:

我需要从java文件中启动两个jar文件,并且当我从第二个jar文件中读取特定状态时,我想从第一个启动的jar文件中调用一个方法。我知道了如何从jar文件中读取输出流。(我还知道,打印的不是jar文件,而是jar文件中的类。我只是以这种方式提出问题,以便清楚地说明我使用的是一个java文件,在该文件中我启动了两个jar文件)

代码语言:javascript
运行
复制
long l = System.currentTimeMillis();
Process theProcess1 = Runtime.getRuntime().exec("java -jar \"C:/test.jar\"");

inStream = new BufferedReader(new InputStreamReader( theProcess1.getInputStream() ));  
...

我现在可以读取jar文件的输出了。

对于一个特殊的关键字,我希望第一个启动的jar运行某个方法(非静态)。

例如:

代码语言:javascript
运行
复制
if(theProcess2 output a certain statuscode)
{
   start a certain Method from executed jar file "in" theProcess1

}

我认为可以通过使用theProcess1输出来实现,但是我不知道如何在jar文件中读取这个流。( jar文件不知道它是通过java文件启动的。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-03 23:01:47

您不能访问另一个java进程类加载器类定义。有关如何正确加载jar的问题,请参阅此问题:How to load a jar file at runtime

一旦加载了jar,就可以使用Class.forName访问第二个jar所需的类

编辑:这是一小段代码片段,可以帮助您阅读流程标准输出。

代码语言:javascript
运行
复制
//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);

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15790842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档