当前位置: 首页 > news >正文

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

环境与工具

Windows 10 / Windows 11 + MinGW-w64 + CMake + JDK + Maven

1. 先理解 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-javaliboqs的 Java 封装
oqs-jni.dllJava 和 native 层之间的 JNI 桥接库
liboqs-java.jarJava 项目最终要引入的 JAR 包

所以构建顺序一定是:

  1. 先构建liboqs
  2. 再构建liboqs-java
  3. 最后在 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提供gccg++,用于编译 C 代码和 JNI 代码
CMake生成并驱动liboqs的构建
JDK编译 Java 代码,同时提供 JNI 头文件
Maven构建liboqs-java并打包 JAR
Git拉取源码,非必需,也可以手动下载 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 Installer:

https://cmake.org/download/

安装时建议勾选:

Add CMake to the system PATH

安装完成后,重新打开一个 PowerShell,执行:

cmake --version

能看到版本号就说明 CMake 已经可以正常使用。


6. 安装 JDK

JDK 可以使用 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.cmd

8. 配置环境变量

这是 Windows 下最容易出问题的一步。

建议配置以下用户变量:

变量名示例值
JAVA_HOMED:\java\jdk-21
MAVEN_HOMED:\javaTools\apache-maven-3.9.x
MinGW_HOMED:\c_tools\mingw64

然后把下面几个目录加入Path

http://www.jsqmd.com/news/1087716/

相关文章:

  • 如何快速获取QQ音乐资源:3步完成高效音乐解析与下载
  • RePKG终极指南:轻松解包Wallpaper Engine资源,释放创意无限可能![特殊字符]
  • 2025年SRC漏洞挖掘实战指南:从攻击面思维到高质量报告
  • Codex 桌面版配对码在哪里找?手机连接电脑完整步骤
  • Windows热键冲突终极指南:3分钟快速找出占用快捷键的罪魁祸首
  • 大模型MoE架构揭秘:为何GPT-4只用2%参数高效推理
  • RustDesk Server日志采集与安全分析实战:构建ELK监控流水线
  • PhotoGIMP终极指南:3步让GIMP界面变得和Photoshop一模一样
  • Box86终极指南:在ARM设备上运行x86应用的深度解析
  • 销售团队的噩梦:经销商协议签署为何总在关键时刻卡壳
  • 抖音直播数据实时采集:完整技术指南与高效实现方案
  • AI工具链降维时刻:ONNX默认化、Prompt结构化与QAT工程化
  • 为什么在AI时代“好奇心”成了最值钱的能力?
  • 3分钟免费制作AI视频:零门槛视频创作终极指南
  • Translumo:彻底解决实时屏幕翻译延迟与准确率问题的终极方案
  • 5分钟上手Fay Agent:开源数字人框架的智能决策与主动交互指南
  • 终极RPG Maker MV/MZ插件库:300+免费插件打造专业级游戏开发体验
  • 瑞萨RA6M3开发板FSP示例项目实战:从环境搭建到模块解析
  • 实战指南:SuperDuperDB测试覆盖率分析与质量提升策略
  • 从瑞萨RH850/U2C评估板原理图解析汽车级MCU硬件设计核心要点
  • CloudCompare点云配准与误差分析:从粗配准到特定阈值点云筛选
  • 终极指南:如何用Locale Remulator轻松解决游戏乱码问题
  • MiniMax-M3 开源实测:部署、推理与基准测试全记录
  • 瑞萨RA8D2 SCI_B模块配置实战:从寄存器解析到UART驱动开发
  • 3步实现离线音频转录:用Buzz打造高效多语言会议记录系统
  • 从零手写神经网络:用NumPy实现OR门理解反向传播原理
  • PRD 撰写提效60%:AI 辅助落地的全流程工程化指南
  • 英雄联盟国服换肤工具R3nzSkin:解锁个性化游戏体验的终极解决方案
  • 从频谱搬移到信号复原:深入剖析采样定理与奈奎斯特准则的工程实践
  • 小米路由器R2D离线部署Misstar Tools 2.0全攻略:告别服务器失效,解锁完整插件生态