【问题标题】:Java - Restart a program running in eclipse [duplicate]Java - 重新启动在eclipse中运行的程序[重复]
【发布时间】:2014-11-11 21:11:06
【问题描述】:

所以,基本上,我有一个 JComboBox 用于更改应用程序的当前语言。 为了实现这一点,由于我有很多组件并且我真的不想手动更改所有组件(按钮,...)上的文本,我认为最好的解决方案是使用“-”重新启动程序language "XX"" 参数(我可以在程序启动方法上轻松处理)。

这段代码完成了这项工作:

public static void restartApplication(String language)
{
    String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator +      "java";
    File currentJar = new     File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI());

    // Build command: java -jar application.jar -language "EN" 
    String command = "\"";
    command += javaBin + "\"" +
        " -jar " + "\"" + currentJar.getPath() + "\"" +
        " -language \"" + language + "\"";

    // Execute command
    new ProcessBuilder(command).start();

    // Close the current instance
    System.exit(0);
}

我的问题是,如何使它在 IDE(在本例中为 Eclipse)中工作? 是否需要定位程序的主类(由Eclipse编译?)?

编辑:实际上,以我不必重新启动程序的方式设计它会更好。谢谢!

【问题讨论】:

  • 为什么不在运行时更改系统属性?
  • 作为用户,我不希望程序在我更改语言时自行重启。我建议您只使用一种方法,该方法可以通过并进行任何必要的文本更改。

标签: java eclipse restart


【解决方案1】:

我知道我不会直接回答您关于如何重新启动运行 eclipse 的程序的问题,因为您不必重新启动程序来更改语言。

就像aioobe说的here

我建议您这样设计您的应用程序 很容易清理所有东西,然后创建一个新的 “主”类的实例。

您应该将您的应用程序设计为除了在主方法中创建一个实例之外什么都不做。

public static void main(String[] args) {
    boolean restart;

    do {
        restart = new MainClass().switchLang();
    } while (restart);
}

如果您更改语言,让switchLang() 返回 true。

【讨论】:

  • 嗯,我可能会这样做。
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
相关资源
最近更新 更多