从一个jar主类中运行第二个代码(jar)

时间:2014-06-23 12:03:31

标签: java jar executable-jar

我需要的是运行一个jar文件,该文件位于我的java代码中的另一个jar文件中。 我有这个turnOffClient.jar文件,我把它放在我的ChatSystemClient.jar文件中,我想要做的是从xClient.jar主类代码执行(启动,运行)turnOffClient.jar文件。 我试过了:

Runtime.getRuntime().exec(this.getClass().getResource("/jars/TurnOffClient.jar").toString());

此外:

TurnOffClient.main(args);

它似乎工作,但当我关闭第一个Java应用程序时,第二个也关闭,我不想要。 我的目录: https://imagizer.imageshack.us/v2/253x254q90/856/ztuz.png

2 个答案:

答案 0 :(得分:2)

这是一个糟糕的编程习惯,而是创建一个调用两个程序的新类。

示例:

Program a;
Program b;

    a.run();
    while(a.isAlive()){
       if( /*we need to run program b*/){
         b.run();
         break;
       }

    }

答案 1 :(得分:0)

这些图形应用程序?您可以在“关闭”时使应用程序 A (打开应用程序 B 的应用程序)非真正关闭,但在应用程序 B之前继续在后台运行实际上是关闭的。

当启动 B 时,JVM只是从B实例化一个特殊类(称之为BMain)并调用其public void main(String[] args)方法。没有理由不能直接从您自己的代码中调用该方法(而不是通过getRuntime().exec()):

BMain.main("my arguments here");

如果您的 A 进程在其窗口关闭时没有立即结束(追捕并消除 A 中的所有JFrame.EXIT_ON_CLOSE个实例,假设您使用的是Swing ),如上所述,它会调用 B 的主要内容,即使 A “已关闭”, B 也会正常运行。