我有一个 Java 控制台应用程序,它是从 Windows 中的批处理脚本和 Linux 中的 shell 脚本启动的。在这两种情况下,任何命令行参数(很复杂)都会简单地传递到 java 应用程序中,后者使用 Apache Commons CLI 解释它们。
现在我想允许用户为程序分配额外的内存。最简单的方法可能是为此添加一个额外的参数(例如 -m 1000),但也有缺点。批处理脚本和 shell 脚本现在都需要解释命令行,以便它们可以提取内存参数并将其用作 JVM 的 -Xmx 参数。这实际上意味着在 3 个地方(批处理/shell/java)满足参数解析的全部复杂性。
唯一想到的另一种方法是让脚本调用一个虚拟 Java 应用程序,该应用程序使用现有的解析逻辑来查找新参数,然后使用正确的内存上限(使用 Runtime.执行())。这将解决代码重复问题。
我的问题是——这对任何人来说都是个坏主意吗?也许有些问题我没有考虑。