Você pode escrever um único script de wrapper que executa um jar com o nome da maneira como é chamado e criar um link simbólico para cada jar. Aqui está o script jar-wrapper (aviso, digitado diretamente no navegador):
#!/bin/sh
name=$(basename "$0")
jar=
for dir in /opt/myjava/*; do
if [ -e "$dir/$name.jar" ]; then jar=$dir/$name.jar; break; fi
done
if [ -z "$jar" ]; then
echo 1>&2 "$name.jar not found"
exit 126
fi
exec /your/favorite/java -jar "$jar" "$@"
Em seguida, crie quantos links simbólicos para o script de wrapper desejar e coloque-os em $PATH
, se desejar:
ln -s wrapper-script myprog1
ln -s wrapper-script myprog2
Se você estiver executando o Linux e for o administrador do sistema, poderá selecionar um interpretador Java para tornar os jars diretamente executáveis, graças ao binfmt_misc .
Por exemplo, no meu sistema:
$ cat /proc/sys/fs/binfmt_misc/jar
enabled
interpreter /usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/jexec
flags:
offset 0
magic 504b0304
Este sistema está documentado em Documentation/binfmt_misc.txt
na documentação do kernel Linux. Para criar uma entrada como a acima, execute o comando
jexec=/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/jexec
echo >/proc/sys/fs/binfmt_misc/register ":jar:M:0:504b0304::$jexec:"
Sua distribuição pode ter um mecanismo para o registro do binfmt no momento da inicialização. No Debian e derivados, isto é update-binfmts
, e os pacotes da JVM já registram jexec
.
Se você precisar passar opções, registre um script de wrapper que adicione as opções em vez de jexec
diretamente.