在ubuntu中运行jar文件的问题

use*_*936 2 java jar 14.04

为什么.jar当我像这样运行脚本时 java -jar myfile.jar它会运行,但是当我像这样执行它时它不运行 ./myfile.jar

AJe*_*iss 5

当您使用运行 jar 时,java -jar myfile.jar您是在告诉 shell 运行java命令并向它传递一些可以java理解的参数。但是,当您使用它运行它时,您是./myfile.jar在要求 shell 确定运行它的中断器,这是它无法做到的。

shell 会在脚本的开头查找 shebang 行,以了解使用哪个应用程序运行脚本,这就是为什么您会看到 shell 脚本以以下开头:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

或者 python 脚本以

#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

您告诉 shell 的内容基本上是使用您在/bin/bash或 处找到的应用程序运行脚本/usr/bin/python。对于您的 jar 文件,shell 无法找到 shebang,因此它不知道如何执行代码。

过去,我使用包装器脚本来执行 Java 应用程序,因此类似于:

#!/bin/bash

java -jar /path/to/myfile.jar
Run Code Online (Sandbox Code Playgroud)

然后,您只需要制作该可执行文件,使用chmod并且您可以像运行任何其他 shell 脚本一样运行它。