如何通过简单地调用其名称从终端 运行 java 应用程序?

How to run java application from terminal by simply calling its name?

我知道从终端调用 jar 文件的默认方式

java -jar myapp.jar

我想通过名称 myapp 从终端调用应用程序。我知道如果脚本保存在 /usr/bin/ 中,可以通过这种方法从终端调用 shell 脚本(当然 .sh 扩展被删除)

可以用jar文件实现吗?我不想设置别名。我想通过从 bin 目录调用来专门执行此操作。

编辑:如果可以通过 java appname 之类的方式调用,那也会有所帮助。

编辑:我已经检查了 linux gcj 的用法,因为 Michael Aaron Safyan 在评论中重定向了我。但是 gcj 据说已经过时多年,不再是行业标准。

这可以通过创建一个 jad 文件并从终端调用 jad myapp 之类的东西来实现吗?

Unix shell 不能运行 jar 文件。唯一的解决方案是 a) 别名,或 b) 在名为 myapp

的文件中为此编写一个最小的包装器
#!/bin/sh

java -jar myapp.jar

并将其放入您的 bin 目录中。不要忘记使其可执行 (chmod 755 myapp)。然后您可以通过 myapp.

调用它

请注意,您可以更聪明地找到正确的版本等。如果您将其许可证包含在你的软件。

可以配置 Linux 将任意文件类型识别为可执行文件。我从来没有做过,但是 here 是对 binfmt_misc 内核能力的描述。

也就是说,这是一个罕见的 java 不需要设置类路径的程序。这最好通过 shell 脚本包装器来完成。