java - 复杂的 Java 命令行参数化

标签 java command-line-interface

我正在尝试找到最佳解决方案,使我的 Java 应用程序可以通过命令行进行配置。我面临的问题是我需要配置复杂的嵌套结构。

示例

考虑以下结构(以大写字母开头的单词是类,缩进表示属性)

  • 界面优化器
    • 抽象问题
      • 维度
    • 人口规模
    • 运行次数

我需要从命令行选择的第一件事是实现 InterfaceOptimizer 的类(例如 java App -O SomeOptimizer )。接下来要选择的是 AbstractProblem它本身需要另一个参数 dimension (例如 java App -O SomeOptimizer -- -P ConcreteProblem

这里的问题是,某些参数是特定类的参数,并且取决于首先给出的参数。 ConcreteProblem 可能采用与 OtherProblem 不同的参数。

经过测试的库

我测试了args4jcommons-cli ,但是当尝试做我需要的事情时,这些都失败了。

WEKA(一种流行的机器学习工具)似乎已经实现了a solution对于这个问题,但它基本上要求每个类实现它自己的 CLI 解析器(并且它们似乎存在一致性问题)。

这个问题有什么好的解决方案(现有的库吗?)?解决这个问题的推荐模式是什么?

最佳答案

我认为您可能只需要编写选择正确类的代码。之后,您可以使用反射将值放入对象中和/或验证命令行选项是否合适。注释在这里会对您有很大帮助,因为您可以使用它来帮助驱动反射引擎,以及生成文档,例如命令行帮助。

关于java - 复杂的 Java 命令行参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498455/

相关文章:

java - 与 java 模式一起使用时,spring + mongodb 的正则表达式查询失败

java - 如何模拟DynamoDB批量保存?

java - 在 android 中将不透明设置为自定义颜色(setAlpha)

command-line-interface - XMLStarlet 不选择任何内容

node.js - 命令行的日期选择器

java - 使用基于表单的容器管理安全性重试登录

php - 如何从 wordpress 中的 cli 启动 php 脚本

python - 如何做一个Python argparse 相互需要的参数组

java - 线程中出现异常 "main"java.lang.NoClassDefFoundError : when running with console. 可能与 Maven 相关

java - 程序在Eclipse中运行正常,但在命令行运行Jar时抛出错误