【问题标题】:Cross-platform Executable Questions (avoiding duplicate)跨平台可执行问题(避免重复)
【发布时间】:2014-11-30 21:27:43
【问题描述】:

我知道 windows 用户更喜欢 .exe(Windows EXEcutables)而 mac 用户更喜欢 .app(AppleScript application) 和 Java 使用 .jar (Java ARchive)。但是是否有任何合理的跨平台可执行文件,因为要执行 JAR,您需要 CMD 或终端(至少在 Mac 的情况下)通过以下方式运行文件:

java -jar %FILEPATH%

但是我可以使用其他可执行文件吗?

我应该只下载 Mac 和 Windows 吗?

我可以做一个可以双击的罐子吗?

我已尽我所能搜索库存溢出,但没有简单合理的答案。

希望这可以帮助比我更多的人:)

【问题讨论】:

  • 您能否解释一下与可执行文件相关的“避免重复”是什么意思?
  • @AlexeiLevenkov 还有很多其他问题“喜欢”这个问题,但所有答案都是 .jar、.app 或 .exe

标签: java executable executable-jar


【解决方案1】:

为了能够通过双击启动 jar 文件,.jar 扩展名需要与 Windows 下的 Java 运行时可执行文件 javaw.exe 相关联。这与使用 Microsoft Word 打开例如 .docx 文件的机制相同。 据我所知,JRE 安装会自动添加这样的关联。

为了告诉 Java 在双击 Jar 后从哪个类开始,您需要在 Jar 中添加一个 META-INF/MANIFEST.MF,就像 @Elliott Frisch 所描述的那样。

顺便说一句:Mac 应用程序实际上是文件夹,Mac OS X 显示为一个整体(右键单击 Mac 应用程序并单击 Show Package Contents 进入该文件夹)。所以这个想法与 Jars 非常相似,尽管 Jars 是真实的文件而不是文件夹——当然它们的格式完全不同。

因此,Jar 是所有平台上“可执行”的格式(安装了 JRE)。

【讨论】:

  • 谢谢,我马上试试!我一直在添加清单文件,但我不知道它位于名为 META-INF 的文件夹中!我知道 mac 应用程序是如何工作的,我之前使用过内置 AppleScript 编辑器。
【解决方案2】:

可执行 JAR 文件是最便携的跨平台可执行文件。 Macintosh 应用程序文件为Mach-O 格式,与Windows Portable Executable 不兼容。 Windows 可执行格式与 Mac 或 Linux (ELF) 不兼容。基本上,能够在 Windows、Mac 和 Linux 上可靠运行的唯一格式是 Jar 文件。

来自Setting an Application's Entry Point Java 教程,

如果您将应用程序捆绑在 JAR 文件中,则需要某种方式来指示 JAR 文件中的哪个类是您的应用程序的入口点。您可以在清单中使用 Main-Class 标头提供此信息,该标头具有一般形式:

Main-Class: classname

【讨论】:

  • 谢谢我以前使用过清单,甚至尝试过,但没有运气。
  • 感谢您的帮助,我终于可以开始工作了,我现在正在使用 swing!
猜你喜欢
  • 2017-11-08
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
相关资源
最近更新 更多