Registro de alterações
6.0.19 2026-08-15
Aviso mais claro de licença de avaliação ao criptografar sem conta
- Quando nenhuma credencial de conta é fornecida, o aviso da CLI agora informa claramente que a aplicação protegida usará uma licença de avaliação e só será executada por 7 dias, e indica https://protector4j.com para a compra de uma licença. Antes, o aviso mencionava apenas "uma licença de avaliação", sem explicar o que isso significava para a aplicação.
- A interface gráfica exibe o mesmo aviso em um diálogo antes de iniciar a criptografia, com três opções: Comprar, Continuar a tarefa e Cancelar a tarefa. O botão de compra abre a página de compra da região de servidor selecionada, de modo que os usuários da região .cn não são enviados ao site .com.
Argumentos de inicialização para abrir a interface gráfica a partir de outras ferramentas
- A interface gráfica agora aceita argumentos de inicialização:
p4j-ui [--task-file <file>] [<input-file>]. Um arquivo de tarefa percorre o fluxo normal de importação até a página de confirmação final. Um caminho de entrada comum é pré-preenchido em uma nova tarefa: um.warseleciona automaticamente o fluxo do Tomcat, enquanto um.jarpara na página de escolha do tipo de aplicação, pois um JAR pode ser uma aplicação Java, uma aplicação Spring Boot ou uma biblioteca. Esta é a interface de integração para ferramentas externas, como plugins de IDE; argumentos com hífen desconhecidos são ignorados, então iniciar a interface gráfica sem argumentos se comporta exatamente como antes.
Criptografia de biblioteca independente marcada como em desenvolvimento
- A criptografia de biblioteca independente ainda não está disponível na linha 6.x e agora é claramente sinalizada: o cartão correspondente na interface gráfica fica esmaecido com o selo "Em desenvolvimento", e o comando
encodeda CLI termina com uma mensagem explicativa em vez de iniciar uma tarefa. O recurso será oferecido em uma versão futura.
6.0.18 2026-08-13
Suporte a JAR multiversão no layout p4jx-fat do Spring Boot
- Corrigido um problema em que, no layout
p4jx-fatdo Spring Boot, as dependências multiversão eram sempre carregadas a partir da versão base. Ao descompactar um JAR aninhado deBOOT-INF/lib, o carregador de classes armazenava as entradas com seus nomes literais, de modo que as classes sobMETA-INF/versions/nunca eram selecionadas e o retorno à versão base sempre prevalecia. Um sintoma concreto: com o Spring Framework 7.0.5,VirtualThreadDelegateera resolvido para o stub da versão base, que lança incondicionalmente umaUnsupportedOperationException; por isso, uma aplicação executada no JDK 25 comspring.threads.virtual.enabled=truenão iniciava. Muitas dependências de uso comum são distribuídas como JAR multiversão, portanto outros caminhos de código específicos de versão eram afetados da mesma forma. - Agora o carregador de classes resolve as entradas multiversão no momento do carregamento, escolhendo a versão mais alta suportada pelo JDK em execução, e o empacotador aplica a mesma resolução ao construir o índice de recursos fat, de modo que o índice e o carregador sempre concordam sobre qual entrada prevalece. Os outros dois layouts,
fateseparate, nunca foram afetados, pois mantêm as dependências como arquivos JAR comuns abertos pela própria JVM.
6.0.17 2026-08-13
Correção da inicialização de aplicações protegidas em caminhos do Windows com caracteres não ASCII
- Corrigida a falha de inicialização de aplicações protegidas no Windows quando o caminho continha caracteres não ASCII, por exemplo chineses. Dependendo de onde o caminho era lido incorretamente, a inicialização falhava com o erro de arquivo
E816ou com uma falha de descriptografia que aparecia comoClassFormatError. O runtime abria o arquivo e normalizava os caminhos byte a byte, de modo que um caractere codificado em uma página de código legada cujo segundo byte é justamente0x5C— a barra invertida — era partido ao meio, e sua parte final era lida como separador de diretórios. No GBK, muitos caracteres chineses de uso cotidiano são codificados assim. Caminhos formados apenas por caracteres ASCII nunca foram afetados. - No Windows, o runtime agora converte os caminhos para caracteres largos por meio da página de código ANSI do sistema antes de abrir arquivos e antes de calcular a impressão digital do runtime, exatamente como o JDK original sempre abriu arquivos. Apenas o caminho de código do Windows mudou; Linux e macOS continuam se comportando como antes. As cinco linhas de JDK foram reconstruídas com a correção: JDK 25, 21 e 17 para VLX 1.0.22, JDK 11 para VLX 1.0.20 e JDK 8 para VLX 1.0.13.
6.0.16 2026-08-10
Correção do empacotamento no Windows para destinos Linux e macOS
- Corrigida uma falha de empacotamento no Windows quando a plataforma de destino é Linux ou macOS. A extração do runtime incluído relatava
Failed to extract P4JX runtimemesmo que o runtime tivesse sido extraído corretamente. O Windows não consegue criar links simbólicos sem privilégios elevados, e os runtimes de Linux e macOS contêm pouco mais de uma centena deles emlegal/— textos de licença que o jlink aponta parajava.baseem vez de duplicar. O comandotarque acompanha o Windows trata isso como aviso, mas ainda assim retorna um código de saída diferente de zero, que o codificador interpretava como falha definitiva e em seguida apagava o runtime já extraído. O empacotamento no Windows para um destino Windows nunca foi afetado, porque os runtimes do Windows não contêm nenhum link simbólico. - O tratamento de arquivos já não depende do comando
tarda plataforma. O codificador agora lê e extrai por conta própria os runtimes.tar.gze os recursos do JavaFX, de modo que o comportamento é idêntico no Windows, Linux e macOS. As permissões de arquivo, incluindo o bit de execução do inicializador, vêm do próprio arquivo e não do sistema de arquivos do host. No Windows os links simbólicos de licença são ignorados: eles não têm função em tempo de execução nem fazem parte da impressão digital do runtime, portanto as aplicações protegidas no Windows são descriptografadas exatamente como antes.
6.0.15 2026-08-08
Correções da caixa de diálogo de atualização
- A caixa de diálogo "Nova versão" agora abre com um tamanho fixo e razoável, em vez de ocupar a tela inteira quando o changelog é longo.
- Adicionada a opção "Verificar atualizações" à barra de ferramentas, permitindo verificar uma versão mais recente a qualquer momento, não apenas na inicialização.
6.0.14 2026-08-07
Criptografia inline de constantes de string, agora o padrão
- Foi adicionado um modo de proteção de strings inline que reescreve as instruções
ldcde carregamento de string em uma chamada a um método de descriptografia sintético próprio de cada classe, removendo por completo do pool de constantes o texto simples de uma constante de string. O texto simples deixa de entrar naSymbolTableao carregar a classe, aparece no heap apenas quando esse código é de fato executado, e as strings não utilizadas permanecem criptografadas. O texto cifrado trafega dentro do corpo da classe e é coberto pela criptografia por método existente. É uma transformação de bytecode puramente do lado do codificador: o formato de arquivo e o runtime permanecem inalterados e funciona em todas as linhas de JDK suportadas sem atualização de runtime. - A proteção de strings agora é uma única opção com três modos — Nenhum, Padrão (pool de constantes V72) e Inline — e Inline é o padrão para todos os tipos de aplicação, incluindo o Tomcat. Foi validada de ponta a ponta em servlets comuns, lógica de negócio com
switchsobre strings e classes de servlet JSP pré-compiladas pelo JspC. A opção da CLI é--encrypt-strings none|constant|inline, e a interface gráfica oferece a mesma escolha. - Um método que não pode ser reescrito — uma interface em um formato antigo de arquivo de classe, um método próximo do limite de 64 KB ou um raro caso limite de serialização — recai na camada padrão V72, de modo que o resultado nunca é mais fraco do que antes.
Inicialização mais rápida do Spring Boot p4jx-fat
- O carregador de classes do Spring Boot em pure-fat agora lê seu índice de recursos aninhados sob demanda em vez de antecipadamente, reduzindo o trabalho de inicialização de grandes aplicações p4jx-fat.
Credenciais de conta a partir de variáveis de ambiente
- Os comandos
encode,javaapp,springbootetomcate o modo de arquivo de tarefa agora podem ler o e-mail e a senha da conta deP4JX_ACCOUNT_EMAILeP4JX_ACCOUNT_PASSWORD(ouP4JX_ACCOUNT_PASSWORD_MD5), usados apenas quando a opção de linha de comando correspondente está ausente, de modo que um arquivo de tarefa exportado permaneça sem credenciais.
6.0.13 2026-08-05
Correção de inicialização para aplicações protegidas que usam javax.lang.model
- Corrigido
NoClassDefFoundError: javax/lang/model/SourceVersionna inicialização de aplicações protegidas cujos frameworks referenciam a APIjavax.lang.model— em especial o Spring Data JPA, cujo repository AOT processor acessaSourceVersiondurante a inicialização do contêiner. O módulojava.compiler, antes removido do runtime empacotado, voltou a ser incluído. É um módulo apenas de API, sem implementação de compilador, portantoToolProvider.getSystemJavaCompiler()continua retornandonullejdk.compilerpermanece ausente — a superfície de proteção não muda. - Os runtimes de JDK 17, 21 e 25 são reconstruídos para VLX 1.0.21, e o JDK 11 para VLX 1.0.19, todos com o módulo
java.compilerrestaurado. O JDK 8 não é afetado porque não tem sistema de módulos e já fornece essas classes.
6.0.12 2026-08-02
Suporte ao JxBrowser 9 e correção de falha em aplicações protegidas que lançam NullPointerException
- As aplicações protegidas agora podem incorporar o JxBrowser 9.
--native-compat jxbrowserseleciona uma das nove versões do catálogo interno, da 9.0.0 à 9.3.1, em sete plataformas com Java 17, 21 e 25. O runtime concede permissão de anexação de thread apenas à biblioteca IPC oficial cujo SHA-256 está registrado para a versão escolhida e verifica novamente o módulo chamador no momento em que uma thread realmente se anexa. Caminhos, hashes e nomes de biblioteca nunca são aceitos pela linha de comando. No macOS 26, use o JxBrowser 9.0.1 ou posterior: a TeamDev corrigiu nessa versão uma falha do Chromium ao criar o Engine, e a 9.0.0 também falha nesse sistema com um JDK comum. - Corrigido o
ClassFormatErrorem aplicações protegidas que lançam umaNullPointerException. A correção da 6.0.9 suprimia a mensagem NPE detalhada da JVM método a método, o que se mostrou insuficiente: esse recurso analisa os corpos dos métodos como bytecode padrão e, depois que o P4JX os transforma, nenhum indicador por método pode comprovar que essa análise continua válida. O runtime agora desativa a mensagem detalhada incondicionalmente. O tipo da exceção, o rastreamento de pilha e qualquer mensagem fornecida pela aplicação não são afetados. Os runtimes de JDK 17, 21 e 25 foram reconstruídos como VLX 1.0.20; o JDK 11 não é afetado e permanece na VLX 1.0.18, e o JDK 8 permanece na VLX 1.0.12. - O
java -versionagora informa a compilação do runtime VLX, permitindo identificar o runtime incluído sem descompactá-lo. - Os dois campos de versão do EXE do Windows passam a ser validados antes do início do empacotamento, em vez de falhar no meio do processo. O Windows armazena cada componente como um inteiro sem sinal de 16 bits, portanto cada um dos um a quatro números separados por pontos deve ficar entre 0 e 65535. Deixar os campos vazios continua significando 0.0.0.0.
6.0.11 2026-07-27
Inicializadores nativos do Windows para aplicações protegidas
- Foi adicionada a geração opcional de EXE nativo do Windows para pacotes Java App, os três layouts do Spring Boot e pacotes Tomcat. Há inicializadores de console e GUI para Windows x64, x86 e ARM64, e os scripts de inicialização existentes continuam presentes em todos os pacotes.
- Foram adicionadas configurações na CLI e na interface gráfica para o nome do EXE, modo, ícone e metadados de versão do Windows. Tarefas multiplataforma geram um EXE somente para os destinos Windows selecionados, e as configurações são preservadas na versão 2 de
p4j-task.yml; arquivos de tarefa da versão 1 continuam legíveis. - O inicializador JExeKit, implementado inteiramente em Win32, foi integrado ao
vlxjreincluído, ao classpath exato e aos argumentos da JVM. Antes de iniciar o Java, os inicializadores rejeitam caminhos que saiam do pacote, substituições por pontos de nova análise e opções inseguras de agente ou boot classpath. - Os modelos do JExeKit são incorporados somente como recursos
.jxtcriptografados com AES-GCM e descriptografados na memória durante a geração. Cada inicializador gerado contém uma assinatura Ed25519 com status de produção sobre seu bloco de parâmetros; as alterações de ícone, versão, manifesto e parâmetros terminam antes da assinaturaAuthenticodefinal do usuário.
6.0.10 2026-07-27
Carregamento mais rápido das dependências do Tomcat sem alterar a estrutura do WAR
- Foram corrigidas lentidões graves na inicialização do Tomcat causadas pela releitura e pelo cálculo do hash de um JAR aninhado protegido inteiro em
WEB-INF/libsempre que uma classe era carregada. O VLX 1.0.17 agora verifica cada JAR aninhado selado apenas uma vez, mantém em cache sua procedência autenticada dentro da VM e continua validando cada classe solicitada em relação ao índice de classes criptografado. - Foi removida a solução temporária que extraía e montava
web-libs. Os arquivosWEB-INF/lib/*.jarpermanecem no arquivo.p4jxprotegido, preservando a estrutura WAR original e o isolamento dos aplicativos. Os runtimes VLX 1.0.17 para JDK 11, 17, 21 e 25 foram publicados para 24 combinações de plataformas compatíveis. O JDK 8 mantém seu caminho ZIP overlay existente e continua no VLX 1.0.11. - Foi corrigida a verificação de compatibilidade do
module-info.classdo aplicativo. Os descritores de módulo não contêm corpos de métodos e agora são excluídos automaticamente da criptografia, permanecendo legíveis pelas ferramentas de descritores. - Os comandos CLI exportados pela interface gráfica agora podem colocar
--java-version,--target-platforme--create-new-folderapós os argumentos do empacotador como um sufixo contínuo. A forma de prefixo existente continua compatível.
6.0.9 2026-07-25
Correção de falha para aplicativos criptografados que exibem NullPointerException
- Corrigida uma falha da JVM que podia ocorrer quando um método protegido lançava uma
NullPointerExceptionimplícita e o aplicativo lia sua mensagem ou imprimia seu rastreamento de pilha. O recurso de "detalhe útil de NPE" do runtime tentava reconstruir o texto "because ... is null" a partir do bytecode criptografado do método, acessava memória inválida e travava a VM (observado em aplicativos JavaFX FXML). Os métodos protegidos agora ignoram a mensagem detalhada e recorrem a umaNullPointerExceptionpadrão; o tipo da exceção, o rastreamento de pilha e qualquer mensagem fornecida pelo aplicativo não são afetados. - Os runtimes para JDK 17, 21 e 25 são reconstruídos para VLX 1.0.16 com esta correção. O JDK 11 não é afetado porque o recurso de NPE útil não existe antes do JDK 14 e permanece em VLX 1.0.15; o JDK 8 permanece em VLX 1.0.11.
6.0.8 2026-07-24
Runtimes do Tomcat baixados sob demanda e padrões seguros para produção
- Foi corrigida a falha do codificador autoprotegido publicado ao empacotar WARs do Tomcat, pois as classes do Tomcat dentro de
app.p4jxdeixaram de ser visíveis como um JAR físico do classpath. O Tomcat 9.0.107 e o 10.1.53 agora são artefatos R2/COS imutáveis e versionados, selecionados de acordo com o namespace de Servlet, baixados no primeiro uso, armazenados no cache local e verificados por um SHA-256 exato e pelo manifesto dos JARs. Caches adulterados são descartados e baixados novamente. - Os JARs públicos de
WEB-INF/libagora são disponibilizados como recursos Web físicos, isolados por aplicação e vinculados por hash. Isso evita a leitura e a verificação repetidas do arquivo aninhado para cada classe durante a inicialização do Spring. - As novas compilações agora usam por padrão o endpoint de licença de produção
https://protector4j.com. O endpoint internohttp://10.10.10.16:16002só é usado quandoP4JX_LICENSE_MODE=devou-PlicenseMode=devé selecionado explicitamente.
6.0.7 2026-07-24
Dependências aninhadas do Tomcat e classes dinâmicas confiáveis
- Foram corrigidas as falhas de WARs protegidos do Tomcat ao carregar classes ou serviços de
WEB-INF/lib/*.jar. O Protector4J agora sela emapp.p4jxos metadados SHA-256 exatos dos JARs e das classes aninhados; dependências desconhecidas, substituídas ou adulteradas continuam sendo rejeitadas. - Foram corrigidas as falhas do Spring CGLIB e do Hibernate Byte Buddy no JDK 11 causadas pelo marcador de origem específico do JDK 11 usado por
MethodHandles.Lookup#defineClass. A confiança dinâmica ainda exige a proveniência da classe chamadora ou do carregador verificada pela VM; strings de marcador, nomes de classe, caminhos, pacotes eCodeSourcenão concedem confiança. - Foram publicados runtimes VLX 1.0.15 para JDK 11, 17, 21 e 25 em 24 combinações de plataformas compatíveis. Todos passaram pelos controles rigorosos L1-L5, incluindo FXML real, Swing/AWT, carregamento de dependências aninhadas do Tomcat e casos negativos de proveniência e adulteração. O JDK 8 permanece no VLX 1.0.11.
6.0.6 2026-07-22
Proveniência confiável da definição de classes
- Foram corrigidas as falhas de inicialização de aplicações JavaFX FXML protegidas:
MethodUtildefine o helperTrampoline, cuja proveniência foi verificada pela VM, por meio dedefineClass(byte[]). A confiança agora só se propaga a partir da proveniência de classe ou carregador verificada pela VM, não de nomes de classe, caminhos, pacotes ou stringsCodeSource. - Foi adicionada cobertura FXML real com
fx:controller, elementos de propriedade, injeção de Controller e inicialização do WebView, além de regressões para definições dinâmicas confiáveis, propagação em dois níveis, fontes desconhecidas, JARs não autorizados e substituição de nomes protected class. - Foram publicados runtimes VLX 1.0.14 para JDK 11, 17, 21 e 25. O JDK 8 permanece em VLX 1.0.11.
6.0.5 2026-07-21
Integridade do ambiente de execução nativo do JavaFX
- Foram corrigidas as falhas de inicialização do JavaFX WebView no Windows (
Graphics Device initialization failed/No toolkit found) colocando as DLLs empacotadas do JavaFX emvlxjre/bine ajustando a busca por bibliotecas nativas do iniciador. - A lista de permissões criptografada de
app.p4jxfoi ampliada para incluir bibliotecas nativas externas. Os arquivos nativos do JavaFX devem corresponder exatamente aos valores SHA-256, independentemente do caminho, e o Glass revalida o arquivo realmente carregado; arquivos não reconhecidos ou adulterados são rejeitados. - Foram publicados ambientes de execução Protector4J atualizados para JDK 11, 17, 21 e 25. As combinações de plataformas JavaFX compatíveis passaram pelo L5.1-L5.4, que cobre a inicialização do WebView e a rejeição de módulos JAR,
jdk.jsobjecte bibliotecas nativas do Glass adulterados.
6.0.4 2026-07-21
Integridade de módulos externos e compatibilidade do runtime JavaFX
- Foi removida a confiança baseada em caminho para módulos externos. Agora, cada JAR de módulo externo deve corresponder exatamente a uma entrada SHA-256 da lista de permissões incorporada em
app.p4jx; arquivos não reconhecidos ou adulterados são rejeitados independentemente da localização. - Foi adicionada a detecção automática do fechamento de dependências a partir de JavaFX
module-info.classe a admissão controlada de módulos JavaFX e JDK fixados, incluindojavafx.mediaejdk.jsobject. - Foram corrigidos os problemas de inicialização do JavaFX WebView e os erros E818 /
ClassFormatErrorapós a camada de inicialização nas versões de JDK e plataformas compatíveis com os novos runtimes P4JX.
6.0.3 2026-07-20
Compatibilidade do módulo JavaFX WebView
- Corrigida a resolução do módulo opcional
jdk.jsobjectpara runtimes P4JX compatíveis reconstruídos a partir da mesma versão de JDK/VLX. Um runtime compatível não é mais rejeitado apenas porque a imagem completalib/modulescontém bytes diferentes. - Permanecem a seleção de artefatos por linha do JDK e plataforma, a validação exata do SHA-256 e do nome do módulo e a nova verificação do fechamento das dependências após a instalação.
6.0.2 2026-07-20
Compatibilidade com JavaFX WebView
- Corrigidas as falhas de inicialização do JavaFX WebView ao empacotar
javafx.mediajunto comjavafx.webe resolver automaticamente o módulojdk.jsobjectque corresponde exatamente ao P4JX quando ele não está presente em um runtime reduzido. - Adicionados downloads de módulos opcionais fixados por SHA-256 e vinculados à versão, plataforma e runtime por meio do serviço público regional. Runtimes que já contêm o módulo ignoram o download.
6.0.1 2026-07-20
Compatibilidade com JavaFX
- Foram corrigidas as falhas de inicialização de fat JARs que incorporam classes do runtime JavaFX. A aplicação automática de compatibilidade agora mantém sem criptografia os namespaces da API, da implementação e da ponte JNI do JavaFX incorporado, evitando a atribuição duplicada com os módulos JavaFX empacotados.
- Foram aprimorados os diagnósticos de compatibilidade e as orientações multilíngues para aplicações com runtimes JavaFX incorporados.
6.0.0 2026-07-20
O Protector4J 6.0 é uma versão principal baseada em uma arquitetura de proteção totalmente reformulada, e não uma atualização incremental comum da série 5.x.
Arquitetura e proteção
- Reformulação da arquitetura fundamental do Protector4J e introdução do novo mecanismo de proteção P4JX.
- Adição de quase 100 medidas de proteção na geração de arquivos, no carregamento de classes, na execução, na proteção contra depuração e na integridade dos artefatos.
- Aumento significativo da barreira contra engenharia reversa. A nova arquitetura foi projetada para tornar a quebra em curto prazo extremamente difícil, mesmo com ferramentas avançadas de análise assistida por IA.
- Reforço das solicitações de licença, dos downloads de runtimes, da verificação de artefatos e da segurança dos instaladores multiplataforma.
Experiência do produto
- Suporte para JDK 8, 11, 17, 21 e 25, com fluxos gráficos de empacotamento para aplicações Java, JavaFX, Spring Boot e Tomcat.
- Adição de verificação de compatibilidade, criptografia seletiva de classes, proteção de JARs de dependências, importação/exportação de tarefas YAML e compilações em lote para várias plataformas de destino.
- Reformulação da interface para desktop, agora com suporte a 11 idiomas e preferência de idioma persistente.
Notas de migração
O uso do Protector4J 6.0 difere significativamente das versões anteriores. Antes de utilizá-lo, releia a documentação mais recente e recompile e migre suas aplicações criptografadas para a versão 6.0 assim que possível, a fim de aproveitar a proteção mais robusta.
Versões anteriores
Registro de Alterações
5.7.0 2026-03-07
- Adicionado suporte para JDK25
5.6.2 2026-01-03
- Corrigido problema de download do jre
- Corrigido problema do pidkiller
5.6.1 2025-08-13
- Problema de execução
5.6.0 2025-08-09
- Corrigido problema de recurso GraphQL
5.5.1 2025-06-01
- Corrigido problema de download de recursos
5.5.0 2025-04-19
- Corrigidos problemas sobre o decoder
5.4.1 2025-04-17
- Compilado pidchecker com a versão mais recente do Go
5.4.0 2025-04-08
- Atualizado JDK17 para 17.0.14
5.3.5 2025-03-26
- Atualizado o wrapper executável
5.3.4 2025-03-08
- Corrigido o problema de não poder executar em alguns sistemas Windows
5.3.3 2025-02-20
- Corrigido o problema de não executar em alguns sistemas Windows
5.3.2 2025-02-04
- Corrigido o problema de META-INF incorreto introduzido pela criptografia de biblioteca JAVA
5.3.1 2025-01-28
- Corrigido o problema de não poder executar em CPUs de versão inferior
5.3.0 2025-01-25
- Adicionado módulo jdk.naming.dns
5.2.0 2025-01-19
- Novo decoder
5.1.0 2025-01-12
- Corrigido o problema de falso positivo do decoder no Windows.
5.0.0 2024-12-28
- Adicionado suporte para criptografia de biblioteca Java isolada (Preview), permitindo que a aplicação execute com jre normal
4.8.1 2024-12-08
- Corrigido o problema de não verificar tipos de arquivo ao processar tarefas Tomcat.
4.8.0 2024-11-30
- Corrigido o problema de não poder executar no Windows 7
- Corrigido o problema do módulo jdk.net não ser importado
4.7.1 2024-09-19
- Corrigido o problema em que o aplicativo Linux gerado não executa corretamente
4.7.0 2024-09-08
- Corrigido o problema em que o programa gerado não consegue executar no macOS
- Corrigido o problema sobre falso positivo de software de segurança
4.6.2 2024-07-21
- Adicionada opção para remover o arquivo application.properties das bibliotecas para aplicações SpringBoot
- Adicionada uma barra de rolagem para resolver o problema em que os elementos na janela não são totalmente exibidos quando a janela é muito pequena.
4.6.1 2024-05-25
- Corrigido o problema de downloads repetidos de vlxjre8 no Mac.
- Corrigido o problema de falta de opções JVM ao carregar TaskInfo.
4.6.0 2024-04-30
- Atualizado jdk para resolver o problema do módulo de login ausente
- Atualizado add-permission-script.sh
4.5.3 2024-03-16
- Adicionado tomcat 10.1.19
4.5.2 2024-03-02
- Corrigido o problema do wrapper no Windows
4.5.1 2024-03-01
- Corrigido o problema de assinatura sobre Java 21
4.5.0 2024-02-25
- Corrigido o problema em que virtual thread não funciona
4.4.0 2024-02-24
- Corrigido problema sobre decoder
4.3.0 2024-02-06
- Atualizado Tomcat para 9.0.85
4.2.2 2024-01-31
- Removido o arquivo wrapper.json desnecessário
4.2.1 2024-01-25
- Corrigido o problema do script de permissão
4.2.0 2024-01-23
- Corrigido o problema em que broken pipe causa a saída do aplicativo
- Corrigido o problema em que a limpeza automática da pasta /tmp causa a saída do aplicativo
- Corrigido o problema em que Java 8 não consegue encontrar libfreetype no macOS
- Corrigido o problema em que conflitos existem quando múltiplos application.properties existem
4.1.0 2023-10-30
- Corrigido um problema com JDK8
- Corrigido um problema de broken pipe no Linux e macOS.
- Usuários chineses agora podem selecionar o servidor como https://protector4j.cn
4.0.1 2023-10-24
- Atualizado decoder
4.0.0 2023-10-17
- Adicionado suporte para Java 21
- Melhorias de segurança para proteções mais fortes
3.3.0 2023-09-29
- Corrigido um problema em que projetos Tomcat não iniciam corretamente.
- Avisa quando classes duplicadas existem em um projeto
3.2.0 2023-08-24
- Corrigido um problema com codificação do Windows em ambientes multilíngues
3.1.1 2023-08-02
- Corrigido código ilegível em caminhos que não são em inglês
3.1.0 2023-07-22
- Corrigidos problemas relacionados ao ZipInputStream.
- Corrigidos problemas relacionados ao ZipFileSystem
- Corrigidos outros problemas
3.0.2 2023-05-29
- Corrigidos problemas de decodificação no Windows
3.0.1 2023-05-25
- Corrigidos problemas de inicialização com a versão mac-aarch64
3.0.0 2023-05-20
- Novo sistema de inicialização de aplicação
- Novo sistema de decodificação
- Java 8 agora pode executar programas com o comando -jar
2.12.5 2023-05-12
- Corrigido jdk8 não encontrando freetype no macOS
2.12.4 2023-02-28
- Atualizado backend