Как я могу сделать исполняемый файл .jar?

11

Я пытаюсь запустить jar-приложение под Ubuntu, поэтому я установил OpenJDK Java 7 Runtime, но при открытии этого приложения я получил следующее сообщение:

Файл /home/aimad/Programms/jMerise/JMerise.jar не помечен как исполняемый. Если это было загружено или скопировано из ненадежного источника, запуск может быть опасным. Для более подробной информации читайте об исполняемом бите.

Аймад маджду
источник

Ответы:

17

Вы всегда можете запустить файл JAR, выполнив java -jar JMerise.jar.

Однако, чтобы сделать сам jar-файл исполняемым, вам нужно установить исполняемый бит, как подсказывает сообщение. chmod +x /home/aimad/Programms/jMerise/JMerise.jarдостигнет этого.

После этого вы можете сделать, ./JMerise.jarчтобы запустить его.

man chmod предоставит вам информацию о том, как работает chmod.

Также смотрите: https://wiki.ubuntu.com/Security/ExecutableBit

Gary
источник
7

Щелкните правой кнопкой мыши файл, выберите «Свойства», затем перейдите на вкладку «Разрешения» и установите флажок «Разрешить выполнение этого файла как программы».

введите описание изображения здесь

RolandiXor
источник
Что делать, если я не могу поставить галочку в этом поле выше, чтобы «разрешить выполнение файла как программы»? Я проверяю это, но через мгновение он автоматически отключается!
user961627
@ user961627 Возможно, файл .jar хранится в разделе, который не поддерживает исполняемый бит. См. Не могу сделать исполняемый файл для более подробной информации.
wjandrea
4

Прежде всего вам необходимо убедиться, что в вашей системе установлена ​​подходящая среда выполнения Java. Ubuntu имеет официальный репозиторий openjdk, который на 99,99% совместим с Oracle Java, для его установки:

sudo apt-get install openjdk-7-jre

Затем создайте файл с именем java-jar-launcher.desktopin ~/.local/share/applicationsи поместите в него следующее содержимое:

[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False

Затем добавьте следующую строку в ~/.local/share/applications/mimeapps.list:

application/x-java-archive=java-jar-launcher.desktop;

Теперь у вас должна быть возможность просто дважды щелкнуть файлы JAR, чтобы запустить их, если ничего не происходит, щелкните правой кнопкой мыши файл JAR, выберите свойства, затем перейдите на вкладку «Открыть с помощью» и там вы должны увидеть «Launcher Java Application», выберите это ,

Этот метод предпочтителен (IMHO), потому что таким образом вы не даете разрешения на выполнение файлов JAR, которые могут быть потенциально опасными. Этот метод будет работать только в графической среде, и пользователю необходимо вручную дважды щелкнуть файл.

tusharkant15
источник
2

Так как вы запускаете приложение jar с java -jar application.jarэтим, это означает, что Java находится на вашем пути. Вам нужны две простые вещи: 1) добавить интерпретатор (который, по-видимому, есть #!java -jar) в первой строке вашего jar-файла, как вы делаете это с помощью сценариев оболочки: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

Если вы отследите содержимое вашего jar-файла, то увидите, что он начинается с примера: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) добавьте атрибут execute, chmod +x application.jar нажав Теперь вы можете «запустить» его через ./application.jar.

gość
источник
0

Если работает файл .jar из командной строки, работает ( java -jar myFile.jar), но двойной щелчок по нему в графическом интерфейсе не дает, и, если sudo chmod +x myFile.jarкажется, что это успешно, но вы все равно не можете открыть с помощью двойного щелчка, и если щелкнуть правой кнопкой мыши на .jar file> Properties> Permissions> «Разрешить выполнение файла как программы» не работает (т. е. флажок переключается обратно сразу после его нажатия), тогда, вероятно, файл .jar находится в файловой системе NTFS, которая не позволяет выполнять разрешения на для каждого файла. (Эта проблема может возникать, например, при двойной загрузке и наличии общего раздела NTFS между Ubuntu и Windows).

Создание модуля запуска (как описывает @ tusharkant15) будет работать, потому что вы выполняете за кулисами /usr/bin/java, а не сам файл .jar. Перемещение файла .jar в другую файловую систему, отличную от NTFS, также будет работать.

drammock
источник