Windows 下构建 liboqs-java,实现 PQC 算法的调用

发布时间:2026/6/29 5:13:57
Windows 下构建 liboqs-java,实现 PQC 算法的调用 环境与工具Windows 10 / Windows 11 MinGW-w64 CMake JDK Maven1. 先理解 liboqs 和 liboqs-java 的关系在开始构建之前先简单理一下几个组件之间的关系。Spring Boot / Java 业务代码 | | 调用 Java API v liboqs-java.jar | | JNI 调用 v oqs-jni.dll | | 链接 v liboqs.a / liboqs | | 实际执行算法 v ML-KEM、ML-DSA 等 PQC 算法可以这样理解组件作用liboqsC 语言实现的后量子密码学算法库liboqs-java对liboqs的 Java 封装oqs-jni.dllJava 和 native 层之间的 JNI 桥接库liboqs-java.jarJava 项目最终要引入的 JAR 包所以构建顺序一定是先构建liboqs再构建liboqs-java最后在 Java / Spring Boot 项目中引用生成的 JAR如果跳过第一步直接构建liboqs-java通常会遇到找不到oqs.h、找不到liboqs.a之类的问题。2. 构建时候的项目目录结构因为需要在github上获取liboqs与libqos-java两个项目源码构建时候建议最终的目录结构如下D:\workspace\liboqs-java-main ├── pom.xml ├── README.md ├── examples │ ├── KEMExample.java │ ├── SigExample.java │ └── RandExample.java ├── src ├── liboqs │ ├── CMakeLists.txt │ ├── src │ └── build │ ├── include │ │ └── oqs │ │ └── oqs.h │ └── lib │ └── liboqs.a └── target └── liboqs-java.jar其中比较关键的是这几个文件liboqs\build\include\oqs\oqs.h liboqs\build\lib\liboqs.a target\liboqs-java.jar只要这几个文件都生成了说明主流程基本走通了。3. 准备构建工具需要提前安装下面几个工具。工具用途MinGW-w64提供gcc、g用于编译 C 代码和 JNI 代码CMake生成并驱动liboqs的构建JDK编译 Java 代码同时提供 JNI 头文件Maven构建liboqs-java并打包 JARGit拉取源码非必需也可以手动下载 ZIP建议所有工具都安装在英文路径下不要放在带中文或空格的目录里。例如D:\c_tools\mingw64 D:\java\jdk-21 D:\javaTools\apache-maven-3.9.x D:\workspace这是因为 native 构建工具对路径比较敏感中文路径或空格路径有时会带来一些很难排查的问题。4. 安装 MinGW-w64可以使用 WinLibs 提供的 MinGW-w64 发行版。下载地址https://winlibs.com/选择 Windows x86_64 版本即可。下载后解压到类似下面的目录D:\c_tools\mingw64确认下面几个文件存在D:\c_tools\mingw64\bin\gcc.exe D:\c_tools\mingw64\bin\g.exe D:\c_tools\mingw64\bin\mingw32-make.exe后面 CMake 会通过这些工具来编译liboqs和 JNI 代码。5. 安装 CMake可以使用 winget 安装winget install Kitware.CMake也可以从官网下载 Windows x64 Installerhttps://cmake.org/download/安装时建议勾选Add CMake to the system PATH安装完成后重新打开一个 PowerShell执行cmake --version能看到版本号就说明 CMake 已经可以正常使用。6. 安装 JDKJDK 可以使用 Eclipse Temurin 或 Oracle JDK。下载地址https://adoptium.net/ https://www.oracle.com/java/technologies/downloads/本文示例使用 JDK 21安装路径假设为D:\java\jdk-21需要确认以下文件存在D:\java\jdk-21\bin\java.exe D:\java\jdk-21\bin\javac.exe D:\java\jdk-21\include\jni.h其中jni.h很重要。构建liboqs-java时会编译 JNI 代码如果安装的是 JRE 而不是 JDK就会缺少这个头文件。7. 安装 Maven从 Maven 官网下载 binary zip 包https://maven.apache.org/download.cgi解压到D:\javaTools\apache-maven-3.9.x确认下面文件存在D:\javaTools\apache-maven-3.9.x\bin\mvn.cmd8. 配置环境变量这是 Windows 下最容易出问题的一步。建议配置以下用户变量变量名示例值JAVA_HOMED:\java\jdk-21MAVEN_HOMED:\javaTools\apache-maven-3.9.xMinGW_HOMED:\c_tools\mingw64然后把下面几个目录加入Path