如何重启java应用程序,记住它的命令行参数

时间:2010-10-04 12:00:02

标签: java restart

我有一个java应用程序。它可以通过几个命令行标志启动。我想提供用户“重启”应用程序的能力。

目前,我们将参数保存在控制文件中,在重新启动应用程序时读取它。重启应用程序的最佳方法是什么 - 如何保留命令行参数?

5 个答案:

答案 0 :(得分:2)

使用您可以检索的RuntimeMXBean,Classpath,Bootclasspath等。

package com;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

class JMXTest {
    public static void main(String args[]) {
        try {
            for ( int i = 0 ; i < args.length ; i++ ) 
                 System.out.println( "args   :" + args[i] );

            RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
            System.out.println( "boot  CP:" + mx.getBootClassPath() );
            System.out.println( "      CP:" + mx.getClassPath() );
            System.out.println( "cmd args:" + mx.getInputArguments() );
        }
        catch( Exception e ) {
            e.printStackTrace();
        }
    }
}

答案 1 :(得分:1)

使用

调用new
java -jar appname.jar arg1 arg2  

使用

关闭当前的一个
System.exit(0);   

在这里你不会遇到保留arg的问题

Here是从java app

调用命令的示例

答案 2 :(得分:1)

无论如何,你必须坚持命令行参数。如果参数集非常复杂,可以考虑编写一个小的批处理或shell脚本文件,除了用这组参数调用java之外什么都不做。

如果你只想用参数启动它一次,然后,如果你重新启动没有参数的应用程序,想让它使用前一次调用的参数,做类似的事情:

public static void main(String[] args) {

   if (args.length == 0)
     args = readArgsFromFile();
   else
     writeArgsToFile();

   // ...

}

旁注:为简单起见,我重复使用了args。为了获得更好的代码,如果需要,将接收或存储的参数复制到另一个数据结构,另一个数组,一个Properties实例,......

答案 3 :(得分:0)

它根据用户的操作系统而有所不同,如果你真的想这样做OS跨平台兼容。然后你应该提供启动脚本:用于Linux的shell,如OS / bat for windows,这些脚本设置类路径和参数。

我不认为在应用程序中创建“重启”按钮是明智的决定,但是如果你想要“eclipse restart”这样的东西,你应该看看RuntimeMXBean,它可以为你启动类路径。

答案 4 :(得分:0)

重启后为什么不从磁盘再次序列化并创建对象?

您需要在Serializable类中实现"CommandLineParams"接口才能执行此操作。

我认为这是完成你想要做的事情的最有条理的方式。