superswagy2002 发表于 2023-12-11 22:36:36

想用java写一个命令行工具有没有什么好用的包

想要前后端结合,就是前端传一个指令过来后端解析然后返回结果给前端这种形式,比如linux中的pwd看当前的绝对路径,我给前端返回一个绝对路径这样。有没有解析命令,自定义命令好用的包

不二如是 发表于 2023-12-11 22:36:37

本帖最后由 不二如是 于 2023-12-12 09:10 编辑

这两个 Java 包不错:


[*]Apache Commons CLI:提供了一个简单而强大的API来解析命令行选项。支持短格式和长格式选项,以及参数分组、命令行帮助信息的自动生成等功能。
[*]JCommander:由Cédric Beust(TestNG的作者)开发,旨在简化命令行参数的解析,支持复杂的参数关系,如列表、映射等,同时提供了国际化和自定义验证器的支持。

要实现前后端结合,使前端发送命令给后端,后端解析这些命令并返回结果的功能

鱼油可以考虑以下几个步骤和技术:

前端设计:
使用JavaScript和HTML/CSS来创建用户界面。
用户可以通过输入框输入命令,比如模仿Linux的命令(例如pwd)。
通过AJAX或其他HTTP客户端库(如Axios, Fetch API)将命令发送到后端服务器。

后端设计:
使用Node.js, Python (Flask或Django), Ruby on Rails等任何后端技术栈。
接收前端发送的命令,并进行解析。
根据命令执行相应的逻辑。

命令解析:
可以自行编写解析逻辑,识别不同的命令并执行相应的操作。
或者使用现有的库,例如在Node.js中,可以使用yargs或commander等库来解析命令行参数。

安全注意事项:
确保后端不会无限制地执行任何前端发送的命令,这可能导致安全漏洞。
对输入的命令进行严格的验证和过滤。

示例场景(以pwd命令为例):
前端用户输入pwd命令。
前端通过HTTP请求将命令发送到后端。
后端解析命令,并执行类似于获取当前工作目录的操作。
后端将结果作为响应返回给前端。
前端展示这个结果。

根据所选择的技术栈(Node.js, Python等),可以找到相应的库或框架来实现这个功能。

这种模式在Web应用程序中很常见,尤其是在创建交互式命令行界面或模拟系统操作时。

FishC 发表于 2023-12-11 22:37:24

在Java中,有一个非常流行的命令行工具包叫做Apache Commons CLI。它可以帮助你解析命令行参数,并且可以很容易地定义和处理自定义命令。

首先,你需要在你的项目中导入Apache Commons CLI库。你可以通过在你的项目的pom.xml文件中添加以下依赖来实现:

<dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.4</version>
</dependency>

接下来,你可以使用以下代码示例来解析命令行参数并执行相应的操作:

import org.apache.commons.cli.*;

public class CommandLineTool {
    public static void main(String[] args) {
      // 创建Options对象
      Options options = new Options();

      // 添加命令行选项
      Option pathOption = new Option("p", "path", true, "显示当前路径");
      options.addOption(pathOption);

      // 创建命令行解析器
      CommandLineParser parser = new DefaultParser();

      try {
            // 解析命令行参数
            CommandLine cmd = parser.parse(options, args);

            // 判断是否提供了-p选项
            if (cmd.hasOption("p")) {
                String path = System.getProperty("user.dir");
                System.out.println("当前路径: " + path);
            }
      } catch (ParseException e) {
            // 处理解析异常
            System.out.println("命令行解析失败:" + e.getMessage());
      }
    }
}

你可以在这个基础上进行扩展,添加更多的命令选项和操作。当你运行这个程序时,可以通过在命令行中加入"-p"选项来显示当前路径。

希望这个示例对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 想用java写一个命令行工具有没有什么好用的包