【问题标题】:Running JARs without java -jar unix & windows?在没有 java -jar unix & windows 的情况下运行 JAR?
【发布时间】:2012-06-13 07:38:37
【问题描述】:

我想在 unix 和 windows 中运行一个 jar 文件,而不必直接用 java 调用它,例如:

java -jar myjar.jar parameters

我想要:

myjar.jar parameters

我已经读完了-

Running a JAR file without directly calling `java`

这对于 unix 来说似乎是一个非常好的 hack。

不过,这在 windows 中是行不通的。

我正在寻找一种适用于 unix 和 windows 的统一解决方案,但我不确定是否存在。

解决方案必须只有一次,并且必须只包含与 jar 相关的更改,而不是操作系统 - 因为这是我提供给客户的文件。

【问题讨论】:

  • 没有解释就被否决了。 Stackoverflow 的被动攻击性再次来袭。我投了赞成票,因为这是一个很好的问题,并且是第一个出现在 Google 搜索结果中的问题。

标签: java windows unix command-line jar


【解决方案1】:

您的要求无法完成:Windows 将仅加载 .dll 文件中 .exe 中使用的 PE/COFF 格式的可执行文件。

您可以做的是为用户提供一个启动实际 Java 程序的“包装”程序。您可以在 C 中创建包装器,这有几个好处:您可以在可执行文件上设置图标并将程序与 Windows 资源管理器中的文件类型相关联。 Batch files 是一种流行的替代方案;它们更容易创建。

【讨论】:

  • "可以使用 java -jar 选项运行的 JAR 文件可以设置其执行权限,因此它们可以在不使用 java -jar 的情况下运行。请参阅 JAR 文件概述docs.oracle.com/javase/7/docs/technotes/guides/jar/…"(在Http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/…) 那么甲骨文是怎么说的呢?
  • @Jr.问题是关于“运行 jars without Java”,即直接在操作系统上。等级
  • 我不这么认为。在他的例子和“hack in linux”中很明显。
  • “hack”添加了对 jar 文件的内核级支持,因此它们可以与 ELF 二进制文件一起执行。 (它在内部启动一个 JVM,但这对用户是透明的)。这在 Windows 上是不可能的,因为不存在类似的内核模块。
【解决方案2】:

您可以提供一个脚本来启动适用于 Unix (.sh) 和 Windows (.bat) 的应用程序。这似乎是许多公司的首选方法。一个例子是 JBoss 服务器,其中为 Windows 提供了 run.bat,为 Unix 提供了 run.sh。这些脚本设置适当的环境变量、类路径等,然后调用 java。

【讨论】:

    【解决方案3】:

    您可以编写自己的 bash 和批处理/powershell 脚本。至于windows,可以试试Launch4J。它应该比从头开始编写复杂的脚本更容易。

    请注意,您只能提供包装器以简化执行(一键式)。无论如何,Java 都必须运行。由用户显式或作为脚本的一部分。你不能没有它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-15
      • 2018-07-16
      • 1970-01-01
      • 2013-03-17
      • 2013-05-15
      • 1970-01-01
      • 2015-09-02
      • 2013-09-09
      相关资源
      最近更新 更多