当前位置: 首页 > 知识库问答 >
问题:

如何在控制台[复制]中运行带有公共cli的java应用程序

越飞翮
2023-03-14

我有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中设置参数:-iinputs.zip-ooutput.zip它可以工作,但是我应该在控制台中使用什么命令?

我试过:java-jar NewMyZip-1。jar-i输入。zip-o输出。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

有人知道问题是什么以及如何解决吗?

共有1个答案

潘涵煦
2023-03-14

这是你的新ZIP-1。包含commons cli的jar?否则,请确保在类路径中包含commons cli jar:

java -cp PATH_TO_JAR/commons-cli.jar -jar NewMyZip-1.jar -i inputs.zip -o output.zip
 类似资料:
  • 我有一台服务器(Ubuntu 14.04.4 LTS),并希望某个Java应用程序一直在其上运行。目前我使用

  • 问题内容: 我正在用Java和gradle编写控制台应用程序。我正在使用插件,并在中正确配置了必填字段。 在我的主班里,我与有联系。这是问题所在:当我在项目目录中运行时,阅读器不会等待控制台输入。而是在第一次通话时返回。对于我在做什么,这种行为是不可取的。 解决办法是什么?是否有用于gradle的单独的控制台应用程序插件,或者我需要以某种方式调整插件以适合我的需要? 问题答案: 默认情况下,gra

  • 在我处理完一个“客户”之后,我用java搜索了很长时间来清除我的控制台。我所说的是我编写了代码,我可以让别人用我的java代码“买”东西,但我无法清除控制台或再次启动扫描仪。在他们使用完之后 我的代码在这里: 我得到的是: 但是我想要的是,如果我完成了这个,我的java代码将看到它说的是你的总数,并将它保持在那里几秒钟,然后重置。你知道怎么做吗 编辑: 此外,为了一箭双雕,您知道如何对双精度小数点

  • 我试图在中运行控制台应用程序,但出现错误。 异常“yii\base\UnknownPropertyException”,在F:\xampp\htdocs\mdc\vendor\yiisoft\yii2\base\Component中显示消息“设置未知属性:yii\console\Response::formatters”。菲律宾比索:209 Common\config\main本地。php Cro

  • 我有一个 .NET Core 控制台应用程序并运行了 。但是,我不知道如何从命令行运行应用程序。有什么提示吗?

  • 假设我有一个Java(或Kotlin,其实并不重要)应用程序,它使用Java。io。控制台API或任何其他操作终端状态的API(例如:): 当Maven Exec插件启动时,上述代码运行正常,但对于Gradle(因为Gradle试图使自己的输出看起来很漂亮,带有所有的铃铛、哨子和进度条),代码只打印: 配置任务,如下所述: 或者按照这里的建议将添加到Gradle的命令行参数并没有真正的帮助(仍然是