java - 如何在 Java 中创建命令行应用程序?

标签 java deployment command-line go

<分区>

我正在编写一个可以在所有流行平台(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 的平台特定脚本文件)确实是最容易和最快速实现的。如果这还不能满足您的需求,有几种解决方案可以提供更好的可用性:

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

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

关于java - 如何在 Java 中创建命令行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21398755/

相关文章:

java - 只需要接受 % 符号作为输入字符串

deployment - WebSphere Server不在运行状态:Jython WebSphere脚本?

macos - install_name_tool 不执行任何操作

Java println 格式化以便我可以显示表格?

C# 使用命令行调用应用程序

java - 设置简单的struts 1.3项目,在ant范围内找不到bean

Java在application.conf中获取 boolean 环境变量

Java.lang.NoClassDefFoundError 名称错误 : how to solve this?

docker - 部署docker服务以使用traefik 2.0进行集群

linux - Bash !$ 相当于第一个词