为什么.jar
当我像这样运行脚本时,它会运行
java -jar myfile.jar
,但当我像这样执行它时它不会运行
./myfile.jar
答案1
当您使用 运行 jar 时,java -jar myfile.jar
您是在告诉 shell 运行java
命令并向其传递一些可以java
理解的参数。但是,当您使用 运行它时,./myfile.jar
您是在要求 shell 确定要与哪个中断器一起运行它,而这是它无法做到的。
shell 会在脚本开头查找 shebang 行,以了解使用哪个应用程序运行该脚本,这就是为什么你会看到以以下内容开头的 shell 脚本:
#!/bin/bash
或者 Python 脚本以以下代码开头
#!/usr/bin/python
基本上,您要告诉 shell 使用在/bin/bash
或 处找到的应用程序运行脚本/usr/bin/python
。对于 jar 文件,shell 无法找到 shebang,因此它不知道如何执行代码。
过去我曾使用包装脚本来执行 Java 应用程序,因此类似于:
#!/bin/bash
java -jar /path/to/myfile.jar
然后你只需要使它可执行,然后chmod
就可以像运行任何其他 shell 脚本一样运行它。
答案2
我已经使用 sudo apt-get install openjdk-7-jdk 安装了 jdk,并使用 sudo apt-get install openjdk-7-jre 安装了 jre,但仍然遇到此问题。我认为这可能是由于我的系统无法找到 java 路径。最后,当我使用以下命令安装 oracle jdk7 安装程序时,我能够使用 ./myfile.jar 命令运行 .jar 文件。我使用以下命令进行安装:
sudo 添加 apt-repository ppa:webupd8team/java
sudo apt-get 更新
sudo apt-get 安装 oracle-jdk7-installer