我是初学者,我尝试编写非常简单的java程序和 这里我有两个java程序。
第一个从文件夹中选择最近文件的程序。
用于连接这些最新文件的第二个程序。
我想要的是创建第三个java程序 - 将启动第一个程序。 然后等待10秒 - 启动第二个java程序。
我想单独保留第一个和第二个程序。
因为我想将它们用于进一步的应用程序。
这可能吗? 我是否必须使用Process方法,如果我想通过java启动notepad.exe? 或者?
谢谢
答案 0 :(得分:1)
主要方法没有什么特别之处。如果您愿意,可以直接从第三个程序中调用它。
public static void main(String[] args) throws Exception {
Program1.main(args);
Thread.sleep(10000);
Program2.main(args);
}
答案 1 :(得分:0)
如果要将它们作为单独的java进程启动,则应使用ProcessBuilder
。您也可以在groovy中执行此操作,非常简单:
"java <arguments>".execute()
否则你可以通过调用@Heathen建议的main方法来“启动”它,尽管它们都将使用该方法在同一个JVM中运行。
答案 2 :(得分:0)
您可以按照描述使用Process方法,但是对于第一个程序完成依赖任意超时并不是明智的解决方案。相反,你应该等待第一个退出。
顺便说一句,您可以生成两个jar文件,每个作业一个。然后,您可以轻松地在每个应用程序中创建一个应用程序,您可以轻松地将它们组合在一起,为组合作业创建第三个应用程序。这比从Java创建处理要好得多。
答案 3 :(得分:0)
ProcessBuilder builder1 = new ProcessBuilder("firstProgram", "arg1", "arg2", ...);
ProcessBuilder builder2 = new ProcessBuilder("secondProgram", "arg1", "arg2", ...);
Process proc1 = builder1.start();
//Pauses for 10 seconds
Thread.sleep(10000);
Process proc2 = builder2.start();
//This next part is necessary to wait for the programs to finish. If you want them to
//run independently of the main thread, you can omit this part
int exitVal1 = proc1.waitFor();
int exitVal2 = proc2.waitFor();
您可以访问Process对象的输入,输出和错误流,如果您想与正在运行的进程进行交互,则非常有用。
您可以在以下位置找到有关Process对象的更多信息 http://download.oracle.com/javase/6/docs/api/java/lang/Process.html
答案 4 :(得分:0)
例如我的代码是:
import java.io.IOException;
public class Launcher
{
public static void main(String args[]) throws IOException, InterruptedException
{
try {
Process[] proc = new Process[2];
proc[0] = new ProcessBuilder("calc.exe").start();
Thread.sleep(3000);
proc[1] = new ProcessBuilder("D:\\NetBeansProjects\\GetIPAddress\\dist\\GetIPAddress.jar").start();
try {
Thread.sleep(3000);
}
catch (InterruptedException ex)
{
}
proc[0].destroy();
Thread.sleep(3000);
proc[1].destroy();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
如果我用notepad.exe替换proc [1]它运行良好
谢谢