Incorporar um JRE em um executável do Windows?

Suponha que eu queira distribuir um aplicativo Java.

Suponha que eu queira distribuí-lo como um único executável. Eu poderia facilmente construir um .jar com o aplicativo e todas as suas dependencies externas em um único arquivo (com algum hacker de Ant).

Agora, suponha que eu queira distribuí-lo como um arquivo .exe no Windows. Isso é bastante fácil, dadas as boas ferramentas lá fora (como Launch4j e os gostos).

Mas suponha agora que eu também não queira depender do usuário final que tenha o JRE certo (ou qualquer JRE em questão) instalado. Eu quero distribuir um JRE com meu aplicativo e meu aplicativo deve ser executado nesse JRE. É fácil criar um executável do instalador do Windows e incorporar uma pasta com todos os arquivos JRE necessários. Mas então eu estou distribuindo um instalador e não um aplicativo de arquivo único.

Existe uma maneira de incorporar o aplicativo e um JRE em um arquivo .exe que atua como o ativador de aplicativos (e não como um instalador)?

    Tente usar os kits de ferramentas Avian e ProGuard . Avian permite incorporar leve máquina virtual em seu aplicativo. Linux, MacOS, Windows e iOS são suportados. E ProGuard permite que você reduza o arquivo jar grande para se preparar para incorporar.

    Há uma nova ferramenta que faz isso: Packr
    https://github.com/libgdx/packr

    Algumas opções ao redor, comercialmente isso é muito bom:

    http://www.excelsior-usa.com/jet.html

    Existem duas opções chave de código aberto GCJ e VMKit

    http://gcc.gnu.org/java/ e http://vmkit.llvm.org/

    Outros caminhos mais prolongados includeiam o IKVM.NET:

    http://www.ikvm.net/

    Qual é uma JVM .NET que pode ser estaticamente compilada para um EXE

    Existe uma maneira de incorporar o aplicativo e um JRE em um arquivo .exe que atua como o ativador de aplicativos (e não como um instalador)?

    Se uma ferramenta comercial é ok para você, install4j resolve este problema muito suavemente (consulte a página “Recursos” ). Pode gerar lançadores de aplicativos e instaladores.

    Eu odiaria me repetir muito, então verifique, por exemplo, esta resposta anterior onde eu a conectei (como o instalador, mas não faz muita diferença aqui).

    Resumo / linha de fundo: o install4j pode criar lançadores .exe nativos que absolutamente não dependem de um JRE pré-instalado (ou qualquer outro libs específico) e oferece opções flexíveis para empacotar (e detectar) JREs.

    O Netbeans permite que um projeto Java SE seja empacotado em um instalador de aplicativo nativo, incorporando um JRE. Está aqui: https://netbeans.org/kb/docs/java/native_pkg.html 🙂

    Outro exemplo … Bundle Java (o JRE) e inicie um aplicativo Java com 7zip SFX! … (Converte aplicativos Java em um executável, mais ou menos)

    Eu sei que estou um pouco atrasado para essa festa, no entanto, parece que ej-technologies (adoro as coisas deles) tem uma nova solução chamada exe4j que fará exatamente o que o OP queria, sem nenhum negócio engraçado necessário.

    http://www.ej-technologies.com/products/exe4j/overview.html

    Se você está trabalhando em um projeto OpenSource, eles fornecem licenças gratuitas (você só precisa entrar em contato com eles). Se é um projeto comercial, então é necessária uma licença … mas a US $ 69 por uma licença, é barato e vale a pena imho.

    Do site deles:

     If you want your own process name instead of java.exe in the task manager and a user friendly task-bar grouping, exe4j does the job for you. exe4j helps you with starting your Java applications in a safe way, displaying native splash screens, detecting or distributing suitable JREs and JDKs, startup error handling and much more. 

    O JSmooth pode fazer isso de acordo com a documentação. Eu só tentei sem um JRE embutido, mas fiquei muito satisfeito. É programável com formiga e nós construímos no Linux.

    http://jsmooth.sourceforge.net/features.php

    Você pode dar uma olhada em: http://ulibgcj.sourceforge.net/uswt.html Tem biblioteca micro-swt que facilita a construção de GUI usando SWT e dê uma olhada no Eclipse GCJ Builder

    Install4j é uma ótima ferramenta para este tipo de propósito. Também é possível verificar o JSmooth ou o launch4j-all embora eu tenha tentado empacotar o jres com o JSmooth e não consegui ..

    Eu encontrei o Projetor Engima x86 / x64 melhor do que o BoxedApp Packer

    Se você conseguir soft miminizejre por packr do que copiar o seu aplicativo myapp.jar no launcher \ jre \ bin \

    e copie do exemplo jre instalado C: \ Arquivos de Programas \ Arquivos \ Java \ 1.8.0_xxx \ bin \ javaw.exe para o launcher \ jre \ bin \

    Abra a input do Engima Protector -> javaw.exe do launcher \ jre \ bin \

    E vá em Opções se você quiser alta compressa e encontre diversos -> linha de comando “-jar myapp.jar”

    E clique em proteger e aguarde dlls inteiros e jar em exe

    Certifique-se de que o myapp.jar deva ser gerado pelo Eclipse com “Package required libraries into JAR gerado” porque você não se preocupe se tiver importado muitas bibliotecas exemplo lwjgl ou JavaFX do que você deve verificar se o javaw_protected.exe incorporado incluiu arquivos importantes .

    Mas o BoxedApp Packer também é o BoxedApp Packer é um pouco maior que o Engima Protector. Protector é quase melhor incorporar javaw.exe com resources / resources. Do que eles não podem rachar arquivos jar … Eu espero que você esteja feliz com o próprio jar em exe como menos 4 mb sem diretório lib – Se você tiver problema com mensagem de erro jvm.cfg Isso significa que você não copiar exe incorporado em raiz diretório de jre ou jdk

    Por favor, certifique-se de que o exe incorporado está fora do diretório raiz jre ou jdk.

    Espero que você não tenha problema se você usar o Protector x86 do que o necessário i586, Protector x64 para jre x64

    Se você usar o Protector x64 com o jre x86 / i386 – não há problemas. Funciona bem.

    Cumprimentos

    // EDIT:

    ATUALIZADO NOVA VERSÃO EXCELSIOR JET + CAIXA VIRTUAL OU PROTETOR são quase melhores “aplicações embarcadas”

    Verifique o youtube: https://www.youtube.com/watch?v=ctbIxq-1MGE