Cannot resolve symbol ‘bouncycastle‘
Bouncycastle是一个Java的密码库,因为加入了jdk的第三方安全库,在使用的时候需要进行配置。缺少相应的配置会报错java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider,或者在IDEA下Cannot resolve symbol ‘bouncycastle‘。
解决方法BouncyCastle可以从www.bouncycastle.org下载(对应JDK版本的BouncyCastle)。
使用的是JDK1.8,所以下载对应的bcprov-jdk15on-161.jar from https://www.bouncycastle.org/latest_releases.html
查看/etc/profile下JAVA_HOME配置路径
使用whereis java命令可以看到JAVA_HOME路径
1 | java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java |
- 安装
在Windows中,找到Java的安装目录。例如:C:\ProgramFiles\Java\jdk1.8.0_38\jre\lib\ext目录下,把bcprov-jdk15on-161.jar文件放于其中。
- 配置安全属性文件
安全属性文件java.security位于和/lib/ext平行的另一个目录/lib/security下,它定义了当前可以使用的加密提供者。
1 | security.provider.1=sun.security.provider.Sun |
它表明加密提供者以及他们的优先级和访问时使用的名称。当需要用到一个加密算法时,虚拟机会依次访问这里列出的提供者,寻找想要的算法,并按这里的优先级顺序使用第一个找到的算法。在文件中插入新的提供者:
1 | security.provider.x=org.bouncycastle.jce.provider.BouncyCastleProvider |
4.在项目中导入相应jar包
- Eclipse中:Right click on Project–>Properties–>Java Build Path–>Libraries tab–> Click on Add External JARs.. Select the path where you have the dowlnloaded bcprov-jdk15on-152.jar.
Then click OK. That's it.
- IDEA中:点击 File -> Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Project Structure界面左侧的“Modules”显示下图界面;在 “Dependencies” 标签界面下,点击右边绿色的 “+”号,选择第一个选项“JARs or directories…”,选择相应的jar包,点“OK”,jar包添加成功。