У меня есть каталог с небольшой структурой:
script.sh
dist/
dist/program.jar
log/
log/error.log
conf/
conf/program.conf
script.sh
выполняет некоторые проверки и запускает program.jar
с большим количеством параметров.
Есть способ инкапсулировать всю эту структуру в один файл (например, directory.app
исполняемые файлы в OSX) и сделать этот файл исполняемым?
Нет, Вы не можете выполнить единственный исполняемый файл и иметь Вашу работу программы без того, чтобы быть распакованным. Причина состоит в том, что Ваша программа ожидала бы быть в состоянии получить доступ к своим файлам с помощью стандарта syscalls, и если Вам упакуют те файлы в архиве, они не будут видимы к Linux.
то, Что можно сделать, использовать makeself для создания единственного самоизвлекаемого исполняемого архива. Тогда Ваш пользователь выполнил бы исполняемый файл, он извлечет файлы из архива, и затем пользователь может запустить установленную программу.
Другая альтернатива, так как Вы используете Java, должна упаковать файлы в архиве .jar и реструктурировать Ваш код. Тогда Вы могли распределить единственный .jar файл, и пользователь выполняет его с java -jar
.