【问题标题】:Java code to run other java programs one by oneJava代码一一运行其他java程序
【发布时间】:2013-07-18 14:26:30
【问题描述】:

有什么办法我可以编写java程序来一个一个地运行其他java程序......我创建了一个bat文件cmd..来运行所有java程序..但是在CMD中......第一个程序没有'未完成并且第二个程序开始运行..这就是发生的事情..在完成第一个程序后,cmd中有什么办法比转到第二个程序..如果第一个程序中的错误而不是在那边运行所有其他程序..或者请告诉我如何使用 java 程序做到这一点..

我的 bat 文件看起来很薄

cd C:\
java program1

cd C:\
java program2
pause

请帮帮我!!谢谢!!

【问题讨论】:

  • 如果其他“程序”在类路径中,您可以简单地编写一个启动器,在命令行中获取主要类名列表并运行它们。 'main' 方法只是另一种方法,因此使用 Class.forName 方法加载每个类文件,内省获取 'main' 方法并执行它,然后移动到下一个。

标签: java cmd


【解决方案1】:

好的,试试这个..

cd C:\
start java program1

java program2

pause

【讨论】:

  • 其他目录下的程序呢??它会一一做??
  • 不,它不会“一个接一个地”执行它会打开一个新窗口并执行program1 ....如果你愿意,你可以在启动cmd后更改目录
【解决方案2】:

试试这个

public static void main(String[] args) {
        Process p =  Runtime.getRuntime().exec("java your_class.class");
        p.waitFor();
        p = Runtime.getRuntime().exec("java seccond_class.class");
        p.waitFor();
    }

在exec方法中可以执行cmd命令

【讨论】:

  • 哦好吧..我需要写路径吗?或者只有类文件..或者它会像bat文件一样一一或相同?因为如果第一个程序没有完成并且第二个启动它不会工作..我想要..在完成第一个程序之后而不是执行第二个程序?请帮帮我!!
  • 如果您的其他 java 程序不在类路径下,它将在您的类路径下运行此 cmd,而不是您需要指定完整路径。您需要一个一个地运行每个程序,我已经用示例编辑了答案
【解决方案3】:

这看起来更像是一个批处理问题,而不是一个 java 问题。尽管 Java 可用于此目的,但它对于管理进程并不是特别方便。坚持使用批处理会更容易,尤其是因为您已经有一个几乎可以使用的批处理文件。

你可以使用

if ERRORLEVEL 1 exit

在批处理语句后停止执行,以防发生错误。在您的 java 程序中,为了清楚地批处理发生了错误,您必须使用System.exit(1); 退出您的程序,或任何其他非零值。此退出码是批量测试的错误级别。

编辑

生成的批处理文件将如下所示:

cd C:\
java program1
if ERRORLEVEL 1 exit

cd C:\
java program2
if ERRORLEVEL 1 exit

pause

【讨论】:

  • 我需要在bat文件中添加什么??如果 ERRORLEVEL 1 退出!!我如何一个一个地运行程序在完成第一个而不是第二个之后..请帮助我!!
  • 会一一做??
  • AFAIK,批处理总是串行执行命令,这意味着一个接一个。如果出现错误,添加确保它退出。试一试应该很简单。
  • 哦,好吧,这个现在可以工作了..但是在完成第一个程序之后,就去第二个吧????我知道,我在问愚蠢的问题..从第一个程序创建文件和第二个程序使用该文件..所以..这就是为什么..请告诉我..在完全完成第一个程序而不是运行第二个程序之后,对吗??
猜你喜欢
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多