【问题标题】:How can I create a command line application in Java? [duplicate]如何在 Java 中创建命令行应用程序? [复制]
【发布时间】:2014-01-28 06:49:53
【问题描述】:

我正在编写一个可以在所有流行平台(Windows、Mac 和 Linux)上运行的命令行工具。我想在golang 中编写它,因为它可以生成静态编译的二进制文件并适用于上述所有平台。在我做出决定之前,我需要评估Java,看看它是否可以做到这一点。

我想知道是否可以在 Java 中创建一流的命令行程序? AFAIK,需要像这样启动 Java 程序

java -cp classpath MyApp

现在我需要将它封装在一个 shell 脚本中以改善体验。类似的,

#!/bin/sh
java -cp classpath MyApp $@

现在用户可以做:

myapp --arg1 value --arg2 value

问题是这种方法不是跨平台的。在 Windows 上,我需要编写一个批处理文件来执行此操作。

我不确定这在 Java 中是否正确。有没有更好的方法来处理这个问题?

【问题讨论】:

标签: java deployment command-line go


【解决方案1】:

您发布的解决方案(调用 java 的平台特定脚本文件)确实是最容易和最快的实现。如果这还不足以满足您的需求,有几种解决方案可以提供更好的可用性:

  1. executable jar files。基本上,通过在 MANIFEST.MF 条目中说明您的主类,该文件通过在某些平台上双击变得可执行(肯定是 Windows,其余的我不确定)。请注意,这需要在计算机上正确安装 JRE。
  2. 服务包装。有 3rd 方产品会将您的 java 应用程序包装在本机可执行文件中,并允许您的应用程序“感觉”像本机应用程序。最常用的是tanuki service wrapper,但还有其他的(launch4j 是适合您所需操作系统的开源替代方案)

编辑 - 相关 SO 问题中的更多选项here

【讨论】:

    【解决方案2】:

    要舒适地使用命令行参数,您可以使用Apache CLI。如果缺少某些参数,它会解析参数并打印它们的列表。在 java 项目中,将 *.bat*.sh 文件都放在 bin 文件夹中总是可以的。这种方法让你感到困惑的是什么?例如,看看 Ant 或 Maven 项目。

    【讨论】:

      【解决方案3】:

      我可能会建议使用 Maven,它有一个名为“maven spring shell”的概念,很容易开发。您确实需要为 windows 和 linux 编写 .bat 和 .sh,但它更多的是一种配置类型。会更容易打包。 以下链接将对您有所帮助 developing spring shell applications

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 2015-11-06
        • 1970-01-01
        • 2012-04-01
        相关资源
        最近更新 更多