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