这两个命令行之间的区别是执行.jar?

时间:2016-04-27 15:45:13

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

当我使用此命令行执行.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?"

2 个答案:

答案 0 :(得分:1)

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

./MyJar.jar AUTO

我需要安装binfmt-support软件包:

sudo apt-get install binfmt-support

如上所述:https://askubuntu.com/a/291514

答案 1 :(得分:1)

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

self.view = pg.GraphicsLayoutWidget()
self.w1 = self.view.addPlot(row=0, col=0, title = 'Data1')
self.w2 = self.view.addPlot(row=0, col=1, title = 'Data2')

qGraphicsGridLayout = self.view.ci.layout
qGraphicsGridLayout.setColumnStretchFactor(0, 2)
qGraphicsGridLayout.setColumnStretchFactor(1, 1)

#!/bin/bash
echo "Hello World"

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

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