Não consigo executar um arquivo .jar no fedora

senhores, como diz o titulo não consigo executar um arquivo .jar com o openjdk no fedora.

vi esse topico aqui

porém nenhuma das soluções apresentadas resolveu, vocês conseguem me ajudar?

Tenta entrar na pasta e executar em linha de comando:

java -jar VRMaster.jar

Aqui no meu computador com Plasma não funciona o clicar duas vezes para executar se for um jar, na verdade abre ele como arquivo compactado. Tenho que iniciar na linha de comando, criar um atalho ou ainda criar um script para iniciar o arquivo com as opções desejadas. Se alguém usa Fedora pode testar pra ver se é o comportamento padrão não executar os jar com duplo clique (ou talvez tenha q marcar como executável?)

1 curtida

No meu openSUSE com KDE Plasma também acontece a mesma coisa, não executa .jar com duplo clique. Pelo terminal funciona.

como seria “criar um atalho ou ainda criar um script para iniciar o arquivo com as opções desejadas?”

como eu faria isso no fedora?

@luizarthurpe Aqui um artigo da ArchWiki (que funciona independentemente da distro) de como criar arquivos .desktop, isto é, atalhos, ou lançadores para aplicativos.

https://wiki.archlinux.org/title/desktop_entries

Vou demonstrar com um exemplo:

Eu tenho um programa, chamado MARS (MIPS Assembler and Runtime Simulator). Ele é um simulador para programar em Assembly na arquitetura MIPS. Esse programa é feito em Java e distribuído no seu site apenas no formato .jar.

Baixei o MARS e o movi para uma pasta chamada etc dentro da minha home, que é uma pasta onde eu guardo arquivos diversos. Assim, o caminho para o arquivo, no meu exemplo, é /home/thiago/etc/Mars4_5.jar.

Depois eu abri um editor de textos e inseri este conteúdo:

[Desktop Entry]
Type=Application
Version=1.0
Name=MARS
Comment=Mips Assembler e Runtime Simulator
Exec=java -jar /home/thiago/etc/Mars4_5.jar
Icon=/home/thiago/etc/mars.ico
Terminal=false
Categories=Development;

Salvei esse arquivo com o nome MARS.desktop dentro do diretório /home/thiago/.local/share/applications/

Observe que na linha “Exec=” eu coloquei o comando necessário para executar o arquivo, que é java -jar seguido da localização do arquivo .jar (o mesmo comando que o @Deleterium mencionou em sua resposta). Na linha “Icon” eu inseri a localização do arquivo com o ícone do programa. Nesse meu caso, eu extraí esse ícone de dentro do arquivo .jar.

E assim um lançador para o programa MARS apareceu no meu menu de aplicativos, e ao clicar nele o programa é aberto:

Recording 2023-05-28 at 10.47.33

fiz o teste da maneira como você descreveu e não funcionou, o programa nem aparece no menu e eu nem consigo executá-lo direto da pasta .local.

funcionou dessa forma, porém ter que fazer isso toda vez que eu precisar executar um arquivo .jar é inadmissível, eu desejava criar um lançador ou algo assim, pois esse não é o único arquivo .jar que preciso executar.

Fiz algumas pesquisas e não achei nada também. Imagino que poderia haver algum programa que pudesse ser instalado e criasse essa opção de executar, nem que fosse como opção secundária (clicar com botão direito, abre o menu, clica “Executar com Java”).

O comportamento padrão me parece ser filosoficamente correto, porque o jar não é um executável no verdadeiro sentido, mas sim um arquivo que precisa do, no mínimo, JRE. Diversos programas que são disponibilizados dessa maneira contam com um instalador que irá cuidar desse detalhe de um script, atalho para instalação no menu e/ou checam os requisitos mínimos de versão do Java que há disponível. Ou seja, me parece ser responsabilidade do desenvolvedor cuidar do empacotamento correto para o instalador e cuidar dos detalhes conforme o sistema operacional. Um programa não deve ser fornecido como arquivo jar pros usuários comuns, ou se é divulgado como jar, então é suposto que seja para desenvolvedores, versão beta, etc…

Isso acontece se você não tiver o openjdk console + openjdk shell. Por algum motivo, sem esses dois, só via terminal que roda os arquivos .jar
image

Para os desenvolvedores, há soluções para transformar um programa em Java para uma aplicação nativa. Dentre várias, achei interessante a GitHub - libgdx/packr: Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X que facilita nesse empacotamento.

Nunca tinha ouvido falar nisso, como eu posso saber se tenho esses dois instalados

AOT só funciona se a aplicação for feita com Java 9 ou 11, ademais será necessário recorrer a third party para esse tipo de compilação, visto que a Oracle tirou o suporte a esse tipo de compilação no Java 17

https://openjdk.org/jeps/410

Só clicar no menu global do Gnome ou apertar Super + A e procurar, mesmo esquema do print que enviei anteriormente

@luizarthurpe pode ser necessário reiniciar a sessão para que o lançador apareça. Sugiro também tentar executar no terminal o comando exatamente do mesmo jeito que você colocou no arquivo .desktop, na sua pasta pessoal mesmo, sem navegar até à pasta onde está o .jar.


Como você disse que tem muitos arquivos JAR há outra solução que pode ser mais prática. Crie um lançador, da mesma forma como eu descrevi na minha resposta anterior, mas com este conteúdo:

[Desktop Entry]
Type=Application
Version=1.0
Name=Executar JAR
NoDisplay=true
Exec=java -jar %f
Terminal=true
MimeType=application/x-java-archive;

Salve com um nome qualquer, como jar-opener.desktop, em /home/seuusuario/.local/share/applications/, ou em /usr/share/applications.

Feito isso, você pode clicar com o botão direito no arquivo .jar, e em “Abrir com outro aplicativo”. Depois clique em “Ver todos os aplicativos” e procure pelo “Executar JAR”.


Após isso, das próximas vezes os arquivos JAR devem executar com duplo clique.

Testado no Nautilus em um Debian 11 com XFCE (Espero que funcione no seu sistema)

Fonte:

Aqui confirmo que usando o arquivo ~/.local/share/applications/jar-opener.desktop funciona no KDE Plasma e no navegador de arquivos padrão, o Dolphin. Eu atualizei o arquivo desktop para ter um ícone de executável e tirei a opção de executar no terminal. Ficou:

[Desktop Entry]
Type=Application
Icon=system-run
Version=1.0
Name=Java
NoDisplay=true
Exec=java -jar %f
# Terminal=true
MimeType=application/x-java-archive;

Para atualizar todos os ícones e menus, execute sudo update-desktop-database

O resultado final é esse:

1 curtida

Eu já tinha criado o lançador antes, porem ainda nao tinha reiniciado o computador, feito isso funcionou e o aplicativo esta aparacendo no menu executando, so e uma pena precisar disso tudo para executar um arquivo .jar.

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.