SpringBoot3+JDK17打包成加密EXE

69 阅读2分钟

最近有一个springweb项目,需要放到客户端,但是又不想让一些人破解反编译jar包,于是我将项目打包成加密exe,让一些人无法简单破解。本文就是介绍详细的配置步骤。

 

 一. pom.xml配置

首先需要配置maven pom文件:

复制代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hadluo</groupId>
    <artifactId>fish-agent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>fish-agent</name>
    <description>fish agent</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>Aliyun Maven</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>aliyun-plugin</id>
            <name>Aliyun Maven Plugin</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </pluginRepository>
    </pluginRepositories>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.graalvm.buildtools</groupId>
                <artifactId>native-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <mainClass>com.hadluo.fish.agent.App</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>process-aot</id>
                        <goals>
                            <goal>process-aot</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
 
</project>

复制代码

 

注意修改你的MainClass 路径。

 

二. VC桌面环境

在下面地址下载vs_BuildTools.exe ,也可自行到官网下载。

www.githubs.xyz/product/684

下载后,只安装一个工具:

  • "使用 C++ 的桌面开发" (Desktop development with C++)
  • (只要勾这一个就够了,右边的可选组件保持默认即可,它会自动包含 MSVC 编译器、Windows 10/11 SDK 等)

安装好之后,在开始菜单就会出现:

image

 

三. graalvm17环境

GraalVM 17 是一个高性能的多语言虚拟机,基于 JDK 17 构建但增加了关键特性。它包含 Graal JIT 编译器(替代传统的 HotSpot JIT),能提供更好的运行时性能优化。最重要的是,GraalVM 支持 Native Image(AOT 编译),可将 Java 程序编译为本地可执行文件,显著提升启动速度和降低内存占用。此外,它还具备多语言能力,可在同一运行时中运行 JavaScript、Python、Ruby 等语言。

 

在下面地址下载graalvm17 , 并且为其配置好JAVA_HOME环境变量:

文件名: graalvm-ce-java17-windows-amd64-22.3.3.zip

www.githubs.xyz/product/685

 

也可自行到官网下载。

 

四. idea构建

在开始菜单找到x64 Native Tools Command Prompt for VS 2022,然后启动:

image

 

找到idea.exe , 然后将其拖到黑框里面(注意idea的快捷方式不行),然后回车运行idea,然后配置好jdk为graalvm17:

 

image

 

然后找到maven插件的native下的native:compile 进行编译,等待即可:

 

image

 

会在target目录下面输出:

 

image