【发布时间】:2015-03-03 06:36:43
【问题描述】:
我有 maven 项目,我正在尝试使用 commons cli 库来处理输入数据:
import org.apache.commons.cli.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Cli {
private static final Logger log = Logger.getLogger(Cli.class.getName());
private String[] args = null;
private Options options = new Options();
public Cli(String[] args) {
this.args = args;
options.addOption("h", "help", false, "show help.");
options.addOption("i", "inputs", true, "Enter the input file name.");
options.addOption("o", "output", true, "Enter the output file name.");
}
public String[] parse() {
CommandLineParser parser = new BasicParser();
String[] returnArguments = new String[2];
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
if (cmd.hasOption("h"))
help();
if (cmd.hasOption("i")) {
log.log(Level.INFO, "The initial file will be " + cmd.getOptionValue("i"));
returnArguments[0] = cmd.getOptionValue("i");
} else {
log.log(Level.SEVERE, "Missing input file name option");
help();
}
if (cmd.hasOption("o")) {
log.log(Level.INFO, "The output file will be " + cmd.getOptionValue("o"));
returnArguments[1] = cmd.getOptionValue("o");
} else {
log.log(Level.SEVERE, "Missing output file name option");
help();
}
} catch (ParseException e) {
log.log(Level.SEVERE, "Failed to parse command line properties", e);
help();
}
return returnArguments;
}
private void help() {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("Main", options);
System.exit(0);
}
}
我在 Intellij Idea 中设置参数:-i inputs.zip -o output.zip 它可以工作,但我应该在控制台中使用什么命令?
我试过了:java -jar NewMyZip-1.jar -i inputs.zip -o output.zip 并得到了例外:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cl
i/ParseException
at main.MyZip.main(MyZip.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseExcepti
on
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
有人知道问题出在哪里以及如何解决吗?
【问题讨论】:
-
java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException的意思是,尽管您在类中导入了org.apache.commons.cli.*,但它并没有包含在您创建的 jar 中。 -
Java jar 不是 DLL,如果您看到这种错误,请继续在预期的 jar 中查找类。您可以在 7zip 或 winzip 中打开它。你会在那里找到很多有趣的信息。
-
@Andreas 如何在我的 jar 文件中包含 org.apache.commons.cli.*??
标签: java apache-commons