【问题标题】:Eclipse, running instances sequentially, one after anotherEclipse,依次运行实例,一个接一个
【发布时间】:2016-01-13 13:11:59
【问题描述】:

我有一个机器人模拟要运行多次以收集统计信息。特别是,我想用 1,2,...,10 个机器人运行模拟,每个机器人必须运行 30 次,所以我想通过 main args 传递所需数量的机器人。

由于模拟非常消耗内存,我想依次运行它们,一个接一个(否则很有可能出现 OutOfMemory Exception)。我在 Java/Eclipse 中工作,在运行配置下,可以指定要传递给程序的参数,就好像它被 shell 调用一样,但我还没有找到任何方法来自动化这个过程。

简而言之,我想做的是:

for i=1 to 10:
  for j=1 to 30:
    run simulation_instance(i)

程序的每次运行都必须是独立的。我尝试过使用Launch Group Option,但它的可配置性太差了。

你知道其他选择吗?

【问题讨论】:

  • 从命令行而不是从 ecpilse 中启动你的 java 程序。
  • 欢迎来到 StackOverflow。虽然可以在 StackOverflow 上提出仅与您相关的问题,但这通常被认为是不好的做法。相反,最好删除所有特定细节并提出一个通用问题,例如:“如何在 eclipse 中多次启动我的 Java 程序?” (你也可以看看:stackoverflow.com/help/how-to-ask.
  • 您是否考虑过编写一个使用 ProcessBuilder 的新类,或者如果您使用的是较旧的 Java 版本 Runtime.exec? Java.docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

标签: java eclipse scripting


【解决方案1】:

在 Eclipse 中有一种方法,使用 Eclipse EASE。它是非常新的,仍在孵化中。但它允许您完全按照您的描述进行操作。

基本步骤是安装Eclipse EASE,然后编写一些看起来有点像的javascript:

// load the Launch module
loadModule("/System/Launch")

// some logic for loops/etc
for (i = 0; i < 30; i++) { 
    l = launch("name of launch configuration")    
    while (!prepare.isTerminated()) {
        // do something to wait like java.lang.Thread.sleep(1)
    }
}

* 截至 2015 年 10 月,EASE 目前处于孵化阶段,直到下一个版本才能访问新的启动模块,您需要从 git 获取 EASE。

更多详情见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2018-08-20
    相关资源
    最近更新 更多