代码之家  ›  专栏  ›  技术社区  ›  Jayan

如何重新启动java应用程序,记住其命令行参数

  •  4
  • Jayan  · 技术社区  · 15 年前

    5 回复  |  直到 15 年前
        1
  •  2
  •   stacker    15 年前

    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();
            }
        }
    }
    
        2
  •  1
  •   Buhake Sindi Tesnep    15 年前

    使用调用新

    java -jar appname.jar arg1 arg2  
    

    使用关闭当前的

    System.exit(0);   
    

    在这里,您将不会面临保留arg的问题

    Here 是从java应用程序调用命令的示例

        3
  •  1
  •   Patrick Ali sasoli    8 年前

    如果只想用参数启动应用程序一次,然后在没有参数的情况下重新启动应用程序,希望它使用上一次调用中的参数,请执行以下操作:

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

    旁注:为了简单起见,我重用了 args

        4
  •  0
  •   lisak    15 年前

    它根据用户的操作系统而变化,如果你真的想做到操作系统跨平台兼容的话。然后您应该提供启动脚本:shell for linux like OS/bat for windows,这些脚本设置类路径和参数。

    我不认为在应用程序中创建“restart”按钮是一个明智的决定,但是如果您想要像“eclipse restart”这样的东西,您应该看看RuntimeMXBean,它可以为您获得引导类路径。

        5
  •  0
  •   Jas    15 年前

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

    你需要实施 Serializable "CommandLineParams" 让我们来做这个。

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