运行java程序 - 没有太多的技术知识

时间:2015-02-18 15:33:25

标签: java batch-file usability

我为"商业用户"创建了许多特别的Java程序。使用。这些程序通常将输入作为命令行参数。

为了方便他们运行这些程序,我为每个程序创建一个批处理文件,它有完整的java命令来运行它和输入参数。

我要求他们更新这些输入参数,保存文件,双击文件以运行不同的输入集程序。然而,他们发现这种方法很难并且不太舒服。

我不想为n个输入创建n个批处理文件,而且我们也不知道将来可能出现的所有输入。

我想知道这个问题是否有任何标准解决方案?可能是已有的GUI还是可以缓解生活的任何东西?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您可以并且想要在每个程序中添加这样的方法'主要课程:

public static String[] usage(){
    return new String[]{
        "name", "\\w+",
        "number", "\\d+" };
}

然后这个Wrapper类可以提供一个通用的提示来调用带有(或多或少)正确参数的程序:

public class Wrapper {
    public static void main( String[] args ) throws Exception {
        System.out.println( args.getClass() );
        Class<?> prog = Class.forName( args[0] );
        Method mu = prog.getMethod( "usage" );
        String[] nps = (String[])mu.invoke( null );
        Scanner scan = new Scanner( System.in );
        List<String> pars = new ArrayList<>();
        for( int i = 0; i < nps.length; i += 2 ){
            boolean ok = false;
            while( ! ok ){
                System.out.print( nps[i] + ": " );
                String line = scan.nextLine().trim();
                if( line.matches( nps[i+1] ) ){
                    ok = true;
                    pars.add( line );
                } else {
                    System.err.println( "input error - please retry" );
                }
            }
        }
        String[] params = pars.toArray( new String[pars.size()] );
        Method mm = prog.getMethod( "main", args.getClass() );
        mm.invoke( null, (Object)(params) );
    }
}

必须使用包含(迄今为止)主要main方法的类的名称调用Wrapper。除了增加使用外,现有代码不必更改。

注意:需要添加一些异常处理,例如:当Class.forName抛出异常ClassNotFoundException时。