Я всегда устанавливал бит выполнения в своих программах 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.
Ответ заключается в регистрации нужных двоичных файлов службой поддержки binfmt.
Изучая разницу между тем, что находится на моих установках 16.04 и моей установкой 14.04, я обнаружил, что предыдущая версия Ubuntu имела больший list
Список содержит jarwrapper.
Установка binfmt-support разрешила проблему:
[ f1]Поддержка binfmt - это служба, которая должна быть сконфигурирована для определения того, что необходимо для работы с различными типами файлов, включая вызов Wine для запуска файлов exe Windows.
Подробности для использования binfmt -support можно найти, изучая страницы man Wine .
Любопытно, почему была отключена поддержка по умолчанию. Но я рад возможности вручную восстановить эту поддержку для своих компьютеров.
Примечание
Кстати, тип программы не определяется расширением. Он определяется бинарным заголовком приложения. Таким образом, приложение можно назвать чем угодно, без расширения.
Ответ заключается в регистрации нужных двоичных файлов службой поддержки binfmt.
Изучая разницу между тем, что находится на моих установках 16.04 и моей установкой 14.04, я обнаружил, что предыдущая версия Ubuntu имела больший list
Список содержит jarwrapper.
Установка binfmt-support разрешила проблему:
$ sudo apt install jarwrapper
Поддержка binfmt - это служба, которая должна быть сконфигурирована для определения того, что необходимо для работы с различными типами файлов, включая вызов Wine для запуска файлов exe Windows.
Подробности для использования binfmt -support можно найти, изучая страницы man Wine .
Любопытно, почему была отключена поддержка по умолчанию. Но я рад возможности вручную восстановить эту поддержку для своих компьютеров.
Примечание
Кстати, тип программы не определяется расширением. Он определяется бинарным заголовком приложения. Таким образом, приложение можно назвать чем угодно, без расширения.
Ответ заключается в регистрации нужных двоичных файлов службой поддержки binfmt.
Изучая разницу между тем, что находится на моих установках 16.04 и моей установкой 14.04, я обнаружил, что предыдущая версия Ubuntu имела больший list
Список содержит jarwrapper.
Установка binfmt-support разрешила проблему:
$ sudo apt install jarwrapper
Поддержка binfmt - это служба, которая должна быть сконфигурирована для определения того, что необходимо для работы с различными типами файлов, включая вызов Wine для запуска файлов exe Windows.
Подробности для использования binfmt -support можно найти, изучая страницы man Wine .
Любопытно, почему была отключена поддержка по умолчанию. Но я рад возможности вручную восстановить эту поддержку для своих компьютеров.
Примечание
Кстати, тип программы не определяется расширением. Он определяется бинарным заголовком приложения. Таким образом, приложение можно назвать чем угодно, без расширения.