Что изменилось, чтобы препятствовать тому, чтобы программы Java работали через бит полномочий

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

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

Это все еще работает над моими компьютерами, которые имеют версию Ubuntu до 16,04. Однако это не работает ни над одним из моих компьютеров, которые обновляются к 16,04.

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

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

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

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

Используя cli как обычная программа:

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

Используя - аргумент банки:

$ java -jar ./HelloWorld.jar 
Hello World

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

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

Обновление

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

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

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

1 ответ

Ответ заключается в том, чтобы зарегистрировать нужные двоичные файлы в службе binfmt-support .

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

Список включает в себя Jarwrapper.

Установка jarwrapper решила проблему:

$ sudo apt install jarwrapper

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

Подробности использования службы поддержки binfmt можно найти, изучив справочные страницы update-binfmts .

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

Примечание

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

2
ответ дан 23 November 2019 в 10:35

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

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