Это стандартная особенность zip формата, позволяющего произвольные данные перед началом архива.
{ printf '#!/bin/sh\nexec java -jar "$0" "$@"\n'; cat app.jar; } > app
chmod +x app
Разумеется, Jar должен содержать класс с public static void main(String[] args) и соответствующий manifest. Без manifest можно обойтись, если заменить команду java -jar "$0" "$@" на java -cp "$0" my.prog.Main "$@"




