.jar
のように実行するとスクリプトが実行されるのに
java -jar myfile.jar
、のように実行すると実行されないのは なぜですか?./myfile.jar
答え1
jarを実行するときは、java -jar myfile.jar
シェルにjava
コマンドを実行するように指示し、理解できる引数を渡しますjava
。ただし、./myfile.jar
シェルに実行に使用する割り込みを決定するように要求しますが、これは実行できません。
シェルはスクリプトの先頭にあるシェバン行を探して、スクリプトを実行するアプリケーションを認識します。そのため、次のようなシェル スクリプトが表示されます。
#!/bin/bash
またはPythonスクリプトは次のように始まります
#!/usr/bin/python
/bin/bash
基本的にシェルに指示しているのは、またはで見つけたアプリケーションを使用してスクリプトを実行することです。/usr/bin/python
で見つかったアプリケーションを使用してスクリプトを実行することです。jar ファイルの場合、シェルはシバンを見つけることができないため、コードの実行方法がわかりません。
以前、Java アプリケーションを実行するためにラッパー スクリプトを使用していました。次のようなものでした。
#!/bin/bash
java -jar /path/to/myfile.jar
次に、 を使用してそれを実行可能ファイルを作成し、chmod
他のシェル スクリプトと同じように実行します。
答え2
sudo apt-get install openjdk-7-jdk を使用して jdk をインストールし、sudo apt-get install openjdk-7-jre を使用して jre をインストールしましたが、それでもこの問題が発生しました。これは、システムが Java パスを見つけられなかったことが原因である可能性があると考えました。最終的に、次のコマンドを使用して Oracle jdk7 インストーラーをインストールしたところ、./myfile.jar コマンドを使用して .jar ファイルを実行できるようになりました。インストールには次のコマンドを使用しました。
sudo add-apt-repository ppa:webupd8team/java
sudo apt-getアップデート
sudo apt-get で oracle-jdk7-installer をインストールします