4、开发环境搭建(Java)
搭建一个干净的 Java 开发环境,说实话,是后续所有工作的地基。我见过不少同事因为 JDK 版本没对齐,调试加密 SDK 时踩了一堆坑,浪费半天时间。今天我就把自己常用的那套流程拆开讲讲,你照着走一遍,基本不会出岔子。
4.1 确认 JDK 版本
加密 SDK 对 JDK 版本有一定要求。我目前主要用的是 JDK 11(LTS),部分旧项目还在用 JDK 8。新版 SDK 已经全面拥抱 JDK 11+ 的模块化特性,所以建议你优先选 JDK 11 或 17。
推荐版本:JDK 11.0.18+ 或 JDK 17.0.6+(LTS 长期支持)。
避免使用 JDK 12/13/14 这类非 LTS 版本,它们生命周期短,容易出兼容性问题。
4.2 安装 JDK 与配置环境变量
安装过程没什么特别的,但配置 JAVA_HOME 这一步容易漏。我记得刚带团队那会儿,有个新人只配了 Path,没配 JAVA_HOME,结果 Maven 死活找不到 JDK。嗯,这里要仔细检查。
- 下载 JDK 安装包(Oracle 或 OpenJDK 均可)。
- 双击安装,记住安装路径,比如
C:\Java\jdk-11.0.18。 - 设置系统环境变量:
- 新增
JAVA_HOME = C:\Java\jdk-11.0.18 - 在
Path中添加%JAVA_HOME%\bin
- 新增
- 打开命令行,输入
java -version和javac -version验证。
技巧:用 where java(Windows)或 which java(Linux/Mac)确认路径是否正确。我曾经遇到两个 JDK 冲突,就是靠这个命令定位的。
4.3 选择构建工具
我个人的习惯是用 Maven 管理依赖。Gradle 也不错,但加密 SDK 官方示例大部分是用 Maven 写的,跟起来更省事。你能用 Gradle 当然也行,但要注意仓库地址和插件配置别写错。
Maven 配置示例(pom.xml)
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>our-crypto-repo</id>
<url>https://repo.ourcompany.com/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.ourcompany.crypto</groupId>
<artifactId>crypto-sdk-java</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
注意:<repositories> 部分一定要加!加密 SDK 一般不会发布到公共 Maven 中央仓库,你需要设置私有仓库地址。我曾经因为忘记加这个,项目一直报 404,排查了半小时才发现。
4.4 IDE 环境准备
我几乎只用 IntelliJ IDEA,社区版足够了。Eclipse 用户也可以,但插件生态差一些。你如果是 IDEA,记得安装这几个插件:
- Lombok(如果 SDK 用了 @Data 注解)
- CheckStyle(保持代码规范)
- Git Integration(IDE 自带)
导入 Maven 项目时,选 File → New → Project from Existing Sources,然后选中你的 pom.xml,IDEA 会自动下载依赖。
个人经验:我第一次导入加密 SDK 时,IDEA 一直报“依赖未解析”。后来发现是 IDEA 的 Maven 仓库索引太久,手动点一下 Reimport 按钮就好了。
4.5 验证 SDK 是否正确引入
写个最简单的 main 方法,跑一下对称加密流程。代码不长,但能快速验证整个环境链是否通了。
import com.ourcompany.crypto.AES;
import com.ourcompany.crypto.CryptoException;
public class EnvCheck {
public static void main(String[] args) throws CryptoException {
String plainText = "Hello, Crypto SDK!";
String key = "0123456789abcdef"; // 16字节密钥
// 加密
String cipherText = AES.encrypt(plainText, key);
System.out.println("加密结果: " + cipherText);
// 解密
String decrypted = AES.decrypt(cipherText, key);
System.out.println("解密结果: " + decrypted);
// 校验
boolean ok = plainText.equals(decrypted);
System.out.println("验证通过? " + ok);
}
}
如果你的控制台打印出“验证通过? true”,那恭喜你——开发环境已经跑通了。如果报异常,大概率是密钥长度不对或者 SDK 版本冲突。
4.6 常见问题与避坑
| 现象 | 原因 | 解决方案 |
|---|---|---|
UnsupportedClassVersionError |
JDK 版本太低,编译版本高于运行版本 | 统一 JDK 版本,至少 11 |
NoClassDefFoundError |
依赖未下载或冲突 | 检查 Maven 仓库配置,清理本地仓库缓存 |
InvalidKeyException |
密钥长度不符合算法要求 | 检查 SDK 文档,确保密钥字节数正确 |
| 编译时乱码 | 项目编码不一致 | pom.xml 中设置 UTF-8,IDE 也保持一致 |
避坑指南:我曾经遇到一个诡异问题——encrypt 方法在本地正常,在 Linux 服务器上却报 SecurityException。排查了两天才发现,服务器 JDK 没有安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。JDK 8 需要手动替换,JDK 11+ 默认已经集成,但如果你还在用 JDK 8,别忘了这一步骤。
4.7 一张图小结:Java 环境搭建流程
下面这个流程图把刚才讲的核心步骤连起来了,你可以照着它一步一步检查,免得漏掉任何一个环节。
整个流程走下来,你基本就有了一个能跑加密 SDK 的 Java 开发环境。后面章节我们会在这个环境里写具体的加密解密代码。