0

我正在开发一个在控制台上运行的项目。有三个类文件。Main.java、User.java 选项.java。我正在使用 args4j 来解析命令行参数。

我第一次从命令行编译一个项目。我使用以下命令编译了项目:

javac -cp .:args4j-2.0.21.jar Main.java User.java Options.java

项目构建成功,我输入以下命令来运行项目:

java -cp .:args4j-tools-2.0.21.jar Main User Options

我收到错误:

Exception in thread "main" org.kohsuke.args4j.IllegalAnnotationError: No OptionHandler is registered to handle class java.lang.Object
at org.kohsuke.args4j.CmdLineParser.createOptionHandler(CmdLineParser.java:166)
at org.kohsuke.args4j.CmdLineParser.addArgument(CmdLineParser.java:110)
at org.kohsuke.args4j.ClassParser.parse(ClassParser.java:38)
at org.kohsuke.args4j.CmdLineParser.<init>(CmdLineParser.java:93)
at ScatterBrain.main(ScatterBrain.java:48)

我必须输入哪个命令来构建项目?

我的选项类:

import org.kohsuke.args4j.*;
import java.util.*;

public class MyOptions{


@Option(name="-r",usage="recursively run something")
private boolean recursive;

@Option(name="-str")        // no usage
private String str = "(default value)";

@Option(name="-n",usage="usage can have new lines in it\n and also it can be long")
private int num;

// receives other command line parameters than options
@Argument
private List arguments = new ArrayList();


}
4

1 回答 1

0

The underlying reason for the problem is I didn't crate any method to use/handle arguments.

Sorry for the silly question.

I wrote "run" method and built at the same command. Code running clearly.

For "run" method look at the below:

public void run(){


    if( recursive )
        System.out.println("-r flag is set");


        System.out.println("-str was "+str);

    if( num>=0 )
        System.out.println("-n was "+num);

        // access non-option arguments

        System.out.println("other arguments are:");

    for( String s : arguments )

        System.out.println(s);


}
于 2014-08-08T09:55:56.727 回答