【问题标题】:Difference betwen these two command lines to execute .jar?这两个命令行执行.jar的区别?
【发布时间】:2016-08-22 00:55:32
【问题描述】:

当我使用此命令行执行 .jar 时(它是在脚本中找到的命令):

./MyJar.jar AUTO

我有这些错误:

./MyJar.jar: 1: ./MyJar.jar: PK: not found
./MyJar.jar: 2: ./MyJar.jar:: not found
./MyJar.jar: 3: ./MyJar.jar: ��H: not found
./MyJar.jar: 4: ./MyJar.jar:: not found
./MyJar.jar: 5: ./MyJar.jar: Ant-Version:: not found
./MyJar.jar: 6: ./MyJar.jar: Syntax error: "(" unexpected

但是当我使用这个命令行执行时,它可以工作:

java -jar MyJar.jar 
  1. 我的第一个问题是:“这两个命令行有什么区别?”
  2. 我的第二个问题是:“为什么我无法使用第一个命令行执行 MyJar.jar?”

【问题讨论】:

  • 为什么不使用google 查找如何运行jar 文件? Jar 不是可执行文件。它只是 java 存档,需要 java luncher 才能运行。这就是为什么你首先需要 java 命令。
  • 实际上第一个命令行在同事的机器上工作,但在我的机器上却不行。我想知道为什么。我在 google 上没有找到关于第一个命令的任何信息。
  • 我知道如何执行 JAR 文件。只是我想了解为什么我的同事可以执行它而不是我。而我刚刚找到答案,他已经安装了binfmt-support包...askubuntu.com/a/291514

标签: java linux shell command-line executable-jar


【解决方案1】:

通常,如果任何文件尝试直接由 Linux 终端文件头信息执行,则操作系统应识别。 例如:

#!/bin/bash
echo "Hello World"

#!/usr/bin/python
print "Hello World"

你可以看到操作系统会理解第一个脚本应该由 /bin/bash 解释器运行,第二个是 python 解释器。

似乎操作系统不理解如何执行您的 ./MyJar.jar 文件。 但是jar可以直接理解你的文件内容

【讨论】:

  • 感谢@FariZ 的回复。你回答了我的第一个问题!
【解决方案2】:

我找到了第二个问题的答案。为了能够以这种方式执行我的 jar:

./MyJar.jar AUTO

我需要安装 binfmt-support 包:

sudo apt-get install binfmt-support

正如在这个话题上提到的:https://askubuntu.com/a/291514

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2016-01-19
    相关资源
    最近更新 更多