Como posso converter meu programa Java em um arquivo .exe? [fechadas]

500

Se eu tiver um arquivo de origem Java (* .java) ou um arquivo de classe (* .class), como posso convertê-lo em um arquivo .exe?

Eu também preciso de um instalador para o meu programa.

Waseem
fonte
1
hack simples para applets: escreva um código C com main e uma chamada para funcionar como "system" como system ("appletviewer java_src_file");
Madhusoodan P
1
O .exe funciona no sistema Windows sem JRE?
Arpit Agarwal
Apenas para concluir (não tentei eu mesmo porque precisávamos do exe wrapper, não do instalador): os pacotes do instalador também podem ser criados usando o javapackager (consulte docs.oracle.com/javase/8/docs/technotes/guides/deploy/… ) . Para criar um instalador EXE ou MSI, é necessário baixar e instalar adicionalmente o Inno Setup ou o WiX.
ANRE
Pode ser NSIS também ajuda; nsis.sourceforge.net/Java_Launcher
baris.aydinoz

Respostas:

324

javapackager

A ferramenta Java Packager compila, empacota e prepara aplicativos Java e JavaFX para distribuição. O comando javapackager é a versão da linha de comandos.

- documentação da Oracle

O javapackagerutilitário é enviado com o JDK. Ele pode gerar arquivos .exe com a -native exebandeira, entre muitas outras coisas.

WinRun4J

WinRun4j é um lançador de java para windows. É uma alternativa ao javaw.exe e oferece os seguintes benefícios:

  • Usa um arquivo INI para especificar caminho de classe, classe principal, vm args, programa args.
  • Nome executável personalizado que aparece no gerenciador de tarefas.
  • Args adicionais da JVM para uso de memória mais flexível.
  • Substituto de ícone incorporado para ícone personalizado.
  • [mais pontos a seguir]

- Página de WinRun4J

WinRun4J é um utilitário de código aberto. Tem muitos recursos.

packr

Empacota seu JAR, ativos e uma JVM para distribuição no Windows, Linux e Mac OS X, adicionando um arquivo executável nativo para que ele apareça como um aplicativo nativo. O Packr é mais adequado para aplicativos GUI.

- README do pacote

O packr é outra ferramenta de código aberto.

JSmooth

JSmooth é um wrapper executável Java. Ele cria lançadores nativos do Windows (padrão .exe) para seus aplicativos java. Isso torna a implantação do java muito mais fácil e fácil de usar, pois é capaz de encontrar qualquer VM Java instalada por si só.

- Site da JSmooth

O JSmooth é de código aberto e possui recursos, mas é muito antigo. O último lançamento foi em 2007.

JexePack

O JexePack é uma ferramenta de linha de comando (ideal para scripts automatizados) que permite empacotar seu aplicativo Java (arquivos de classe), opcionalmente, juntamente com seus recursos (como GIF / JPG / TXT / etc), em um único EXE do Windows de 32 bits compactado , que é executado usando o Java Runtime Environment da Sun. Os aplicativos de console e de janela são suportados.

- Site do JexePack

O JexePack é um trialware. O pagamento é necessário para uso na produção e os arquivos exe criados com esta ferramenta exibem "lembretes" sem pagamento. Além disso, o último lançamento foi em 2013.

InstallAnywhere

O InstallAnywhere facilita para os desenvolvedores a criação de software de instalação profissional para qualquer plataforma. Com o InstallAnywhere, você se adaptará rapidamente às mudanças do setor, entrará no mercado mais rapidamente e proporcionará uma experiência envolvente ao cliente. E conheça a vulnerabilidade dos componentes OSS do seu projeto antes de enviar.

- Site do InstallAnywhere

InstallAnywhere é um pacote comercial / corporativo que gera instaladores para programas baseados em Java. Provavelmente é capaz de criar arquivos .exe.

Arquivos JAR executáveis

Como alternativa aos arquivos .exe, você pode criar um arquivo JAR que é executado automaticamente ao clicar duas vezes, adicionando um ponto de entrada ao manifesto JAR .


Para maiores informações

Uma excelente fonte de informações sobre esse tópico é o artigo da Excelsior " Converter Java em EXE - por que, quando, quando não e como ".

Consulte também o artigo complementar " Melhores ferramentas de conversão de JAR para EXE, gratuitas e comerciais ".

Jay
fonte
É melhor usar o eclipse e o Jsmooth. Siga estas etapas regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J
Algum destes trabalhos para a minha situação? stackoverflow.com/questions/56674075/...
gunslingor
112

Launch4j

O Launch4j é uma ferramenta de plataforma cruzada para agrupar aplicativos Java distribuídos como jars em executáveis ​​nativos leves do Windows. O executável pode ser configurado para procurar uma determinada versão do JRE ou usar uma versão em pacote configurável, e é possível definir opções de tempo de execução, como o tamanho inicial / máximo da pilha. O wrapper também fornece uma melhor experiência do usuário por meio de um ícone de aplicativo, uma tela inicial pré-JRE nativa, um nome de processo personalizado e uma página de download de Java, caso o JRE apropriado não possa ser encontrado.

- Site do Launch4j

the.duckman
fonte
35

ATUALIZAÇÃO: O GCJ está morto. Foi oficialmente removido do projeto GCC em 2016. Mesmo antes disso, foi praticamente abandonado por sete anos e, em qualquer caso, nunca foi suficientemente completo para servir como uma implementação Java alternativa viável.

Vá encontrar outro compilador Java AOT.

GCJ: O GNU Compiler for Java pode compilar o código-fonte Java no código da máquina nativa, incluindo executáveis ​​do Windows.

Embora nem tudo em Java seja suportado pelo GCJ, especialmente os componentes da GUI (consulte Quais APIs Java são suportadas? Quão completa é a questão do suporte? Na FAQ ). Não usei muito o GCJ, mas pelo teste limitado que fiz com aplicativos de console, parece bom.

Uma desvantagem do uso do GCJ para criar um executável independente é que o tamanho do EXE resultante pode ser bastante grande. Uma vez, compilei um aplicativo de console trivial no GCJ e o resultado foi um executável de cerca de 1 MB. (Pode haver maneiras de contornar isso que eu não conheço. Outra opção seria programas de compactação executável.)

Em termos de instaladores de código aberto, o Nullsoft Scriptable Install System é um instalador com script. Se você estiver curioso, existem exemplos contribuídos pelo usuário sobre como detectar a presença de um JRE e instalá-lo automaticamente se o JRE necessário não estiver instalado. (Só para informar você, eu nunca usei o NSIS antes.)

Para obter mais informações sobre o uso do NSIS na instalação de aplicativos Java, consulte minha resposta para a pergunta " Qual é a melhor maneira de distribuir aplicativos Java? "

coobird
fonte
2
O projeto está realmente morto, como posso ver. Nenhuma notícia na página principal
Vladislav Rastrusny
O desenvolvimento do GNU Java mudou para o OpenJDK, pois as fontes que não são da Oracle não conseguiram acessar o TCK para validação.
Thorbjørn Ravn Andersen
25

Você pode criar um arquivo em lotes com o seguinte código:

start javaw -jar JarFile.jar

e converta o .bat em um .exe usando qualquer conversor .bat para .exe.

MultiplyByZer0
fonte
2
Um bom wrapper traz um JRE ou o instala, se necessário, e manipula situações de erro.
Thorbjørn Ravn Andersen
16

Estamos usando o Install4J para criar instaladores para ambientes Windows ou Unix.

É facilmente personalizável até o ponto em que você deseja escrever scripts para ações especiais que não podem ser feitas com diálogos padrão. Mas, apesar de estarmos configurando os serviços do Windows com ele, estamos usando apenas componentes padrão.

  • instalador + iniciador
  • Windows ou Unix
  • programável em Java
  • tarefa formiga
  • muitos painéis e ações padrão personalizáveis
  • opcionalmente inclui ou baixa um JRE
  • também pode iniciar serviços do windows
  • múltiplos idiomas

Eu acho que o Launch4J é da mesma empresa (apenas o iniciador - sem instalador).

PS: infelizmente não estou sendo pago por esse endosso. Eu apenas gosto dessa ferramenta.

Stroboskop
fonte
15

O Java Web Start mais recente foi aprimorado para permitir uma boa operação offline e também para a "instalação local". Vale a pena investigar.

EDIT 2018: O Java Web Start não é mais fornecido com os JDKs mais recentes. A Oracle está buscando um modelo "implemente seu aplicativo localmente com um JRE incluído".

Thorbjørn Ravn Andersen
fonte
Aparentemente, o JWS teve tanta segurança reforçada, que requer muito mais esforço do que anteriormente para começar a funcionar. Ainda pode ser útil para instaladores.
Thorbjørn Ravn Andersen
9

Se você precisar converter todo o seu aplicativo em código nativo, ou seja, um EXE mais DLLs, existe o ExcelsiorJET . Achei que funciona bem e forneci uma alternativa ao empacotamento de um JRE.

mdma
fonte
Muito caro, no entanto.
Mordechai
9

O IMHO JSmooth parece fazer um bom trabalho.

jussij
fonte
6

Eu diria que o launch4j é a melhor ferramenta para converter um código-fonte java (.java) em arquivo .exe Você pode até compilar um jre para distribuição e o exe pode até ser iconificado. Embora o tamanho do aplicativo aumente, ele garante que o aplicativo funcione perfeitamente, mesmo que o usuário não tenha um jre instalado. Ele também garante que você seja capaz de fornecer o jre específico necessário para seu aplicativo sem que o usuário precise instalá-lo separadamente. Mas, infelizmente, o java perde sua importância. Seu suporte multiplataforma é totalmente ignorado e o aplicativo final é suportado apenas para Windows. Mas isso não é grande coisa, se você estiver atendendo apenas aos usuários do Windows.

Pratanu Mandal
fonte
5

Você pode usar Janel . Este último funciona como iniciador de aplicativos ou iniciador de serviço (disponível na versão 4.x).

L. BIZE
fonte
4

Como alternativa, você pode usar algum tradutor java-to-c (por exemplo, JCGO ) e compilar os arquivos C gerados em um arquivo binário (.exe) nativo para a plataforma de destino.

Ivan Maidanski
fonte
2
Estou incrédulo com a eficácia desse método. Eu precisaria vê-lo para acreditar (pense no fato de que a maioria dos códigos Java são chamadas de API para o JRE, e tudo isso não está presente no C, não importa as diferenças de funcionamento da linguagem).
Camilo Martin
3

Posso ser perdoado por ser contra a conversão de um programa java em um aplicativo .exe e tenho minhas razões. o principal é que um programa java pode ser compilado em um arquivo jar de vários IDEs. Quando o programa está no formato .jar, ele pode ser executado em várias plataformas, em oposição ao .exe, que seria executado apenas em um ambiente muito limitado. Sou a favor da idéia de que os programas Java não devem ser convertidos para o Exe, a menos que seja muito necessário. Pode-se sempre escrever arquivos .bat que executam o programa Java enquanto este é um arquivo jar.

se for realmente necessário convertê-lo em exe, o conversor Jar2Exe faz isso silenciosamente e também é possível anexar bibliotecas compiladas com o aplicativo principal.

ErrorNotFoundException
fonte
O problema é que o poder do java é a portabilidade, mas muitas pessoas só precisam de um exe básico do Windows. Pessoalmente, adoro o conceito de java ... mas gostaria de distribuir algo que meus usuários poderiam executar, sem precisar baixar um JRE.
Balmipour
2

Você pode converter jar para exe usando jar2exe . No entanto, você precisa comprar o software. Se você precisar de um software de código aberto, sugiro JSmooth .

Raghunandan
fonte