Почему .jar
скрипт запускается, когда я запускаю его как
java -jar myfile.jar
, но не запускается, когда я выполняю его как
./myfile.jar
решение1
Когда вы запускаете свой jar с помощью java -jar myfile.jar
вы говорите своей оболочке запустить java
команду и передаете ей некоторые аргументы, которые java
она понимает. Однако когда вы запускаете его с помощью ./myfile.jar
вы просите оболочку определить прерыватель для его запуска, чего она сделать не может.
Оболочка ищет строку shebang в начале скрипта, чтобы узнать, с каким приложением его запускать, поэтому вы увидите скрипты оболочки, начинающиеся с:
#!/bin/bash
Или скрипты Python начинаются с
#!/usr/bin/python
По сути, вы сообщаете оболочке, что нужно запустить скрипт, используя приложение, которое вы найдете в /bin/bash
или /usr/bin/python
. В случае с вашим jar-файлом оболочка не может найти shebang, поэтому она не знает, как выполнить код.
Раньше я использовал скрипты-оболочки для выполнения приложений Java, поэтому что-то вроде этого:
#!/bin/bash
java -jar /path/to/myfile.jar
Затем вам просто нужно сделать этот исполняемый файл, используя chmod
, и вы сможете запустить его, как любой другой скрипт оболочки.
решение2
Я установил jdk с помощью sudo apt-get install openjdk-7-jdk и jre с помощью sudo apt-get install openjdk-7-jre, но все равно столкнулся с этой проблемой. Я думал, что это может быть связано с тем, что моя система не может найти путь java. Наконец, когда я установил установщик oracle jdk7 с помощью следующих команд, я смог запустить файл .jar с помощью команды ./myfile.jar. Я использовал следующие команды для его установки:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get обновление
sudo apt-get install oracle-jdk7-installer