如何在控制台中使用commons cli运行java应用程序
我有一个maven项目,我正在尝试使用commons cli库来处理输入数据:如何在控制台中使用commons cli运行java应用程序,java,apache-commons,Java,Apache Commons,我有一个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 Str
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
有人知道问题是什么以及如何解决吗?您的NewMyZip-1.jar是否包含commons cli?否则,请确保在类路径中包含commons cli jar:
java -cp PATH_TO_JAR/commons-cli.jar -jar NewMyZip-1.jar -i inputs.zip -o output.zip
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.*你的NewMyZip-1.jar是否包含commons cli?如何才能看到我的jar包含commons cli?只需解压缩jar并检查包含哪些其他库。