Что изменилось для предотвращения запуска программ Java через бит разрешения

Я всегда устанавливал бит выполнения в своих программах Java, чтобы вызывать их как обычную программу, не используя аргумент -jar ... просто запустив приложение с именем в пути.

In прошлое, оно заняло только: chmod +x myjavaprogram.jar, а затем выполнило его с ./myjavaprogram.jar из командной строки.

Он по-прежнему работает на моих компьютерах с версией Ubuntu до 16.04. Тем не менее, он не работает ни на одном из моих компьютеров, которые обновлены до -jar .

Я не могу найти ссылки на эту проблему, вне предложений, чтобы обеспечить бит выполнения и некоторые ссылки на обеспечение его установки: sudo apt install binfmt-support

Я никогда не устанавливал пакет раньше, однако, чтобы исправить эту проблему, я запустил установщик, который подтверждает, что он уже установленный на Ubuntu по умолчанию и имеет самую последнюю версию.

Единственные другие ссылки, которые я нахожу с проблемами при запуске java-программ, - это спецификации правильной установки Java (openjdk или oracle). Я установил с полными обновлениями. Я также использовал sudo update-alternatives --config java для изменения между ними. Они показывают ту же ошибку на консоли.

Это то, что я получаю от двух методов:

Использование cli в качестве обычной программы:

$ ./HelloWorld.jar invalid file (bad magic number): Exec format error

Использование аргумента -jar:

$ java -jar ./HelloWorld.jar Hello World

Многие из моих приложений Java, которые находятся в моей папке /usr/local/bin, переименовываются без расширения Java. Они все еще работают как обычная программа на моих компьютерах с версией Ubuntu, предшествующей 16.04.

Кто-нибудь знает, как добавить эту функцию в версию 16.04?

Это то, что я получаю от двух методов:

Двойной щелчок приложений из браузера файлов работает.

Однако у меня есть десятки java-приложений, которые я запускаю только например, с помощью обычных инструментов командной строки, таких как find, top, grep, netstat и т. д. Некоторые команды вызывают другие java-приложения, которые находятся в пути exec.

5
задан 22 May 2017 в 19:30

3 ответа

Ответ заключается в регистрации нужных двоичных файлов службой поддержки binfmt.

Изучая разницу между тем, что находится на моих установках 16.04 и моей установкой 14.04, я обнаружил, что предыдущая версия Ubuntu имела больший list

Список содержит jarwrapper.

Установка binfmt-support разрешила проблему:

[ f1]

Поддержка binfmt - это служба, которая должна быть сконфигурирована для определения того, что необходимо для работы с различными типами файлов, включая вызов Wine для запуска файлов exe Windows.

Подробности для использования binfmt -support можно найти, изучая страницы man Wine .

Любопытно, почему была отключена поддержка по умолчанию. Но я рад возможности вручную восстановить эту поддержку для своих компьютеров.

Примечание

Кстати, тип программы не определяется расширением. Он определяется бинарным заголовком приложения. Таким образом, приложение можно назвать чем угодно, без расширения.

2
ответ дан 22 May 2018 в 22:21

Ответ заключается в регистрации нужных двоичных файлов службой поддержки binfmt.

Изучая разницу между тем, что находится на моих установках 16.04 и моей установкой 14.04, я обнаружил, что предыдущая версия Ubuntu имела больший list

Список содержит jarwrapper.

Установка binfmt-support разрешила проблему:

$ sudo apt install jarwrapper

Поддержка binfmt - это служба, которая должна быть сконфигурирована для определения того, что необходимо для работы с различными типами файлов, включая вызов Wine для запуска файлов exe Windows.

Подробности для использования binfmt -support можно найти, изучая страницы man Wine .

Любопытно, почему была отключена поддержка по умолчанию. Но я рад возможности вручную восстановить эту поддержку для своих компьютеров.

Примечание

Кстати, тип программы не определяется расширением. Он определяется бинарным заголовком приложения. Таким образом, приложение можно назвать чем угодно, без расширения.

2
ответ дан 18 July 2018 в 12:55

Ответ заключается в регистрации нужных двоичных файлов службой поддержки binfmt.

Изучая разницу между тем, что находится на моих установках 16.04 и моей установкой 14.04, я обнаружил, что предыдущая версия Ubuntu имела больший list

Список содержит jarwrapper.

Установка binfmt-support разрешила проблему:

$ sudo apt install jarwrapper

Поддержка binfmt - это служба, которая должна быть сконфигурирована для определения того, что необходимо для работы с различными типами файлов, включая вызов Wine для запуска файлов exe Windows.

Подробности для использования binfmt -support можно найти, изучая страницы man Wine .

Любопытно, почему была отключена поддержка по умолчанию. Но я рад возможности вручную восстановить эту поддержку для своих компьютеров.

Примечание

Кстати, тип программы не определяется расширением. Он определяется бинарным заголовком приложения. Таким образом, приложение можно назвать чем угодно, без расширения.

2
ответ дан 24 July 2018 в 20:03

Другие вопросы по тегам:

Похожие вопросы: