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

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

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

使用您可以检索的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(); } } } 

调用新的使用

 java -jar appname.jar arg1 arg2 

关闭当前使用

 System.exit(0); 

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

以下是从java app调用命令的示例

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

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

 public static void main(String[] args) { if (args.length == 0) args = readArgsFromFile(); else writeArgsToFile(); // ... } 

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

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

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

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

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

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