Eclipse执行SVN操作报Algorithm missing算法缺失错误如何修复
Eclipse SVN操作偶发E175002加密算法缺失报错解决方案
报错表现
执行SVN更新、提交等操作时偶发控制台输出如下报错,报错后所有SVN操作失效,重启Eclipse/电脑仅偶尔恢复:
update [myLocalSVNpath] -r HEAD --force svn: E175002: Algorithm missing: svn: E175002: OPTIONS request failed on '[myRemoteSVNpath]/trunk' svn: E175002: Algorithm missing: svn: E175002: OPTIONS request failed on '[myRemoteSVNpath]/trunk' Algorithm missing: No installed provider supports this key: javax.crypto.spec.SecretKeySpec class configured for Mac (provider: SunJCE) cannot be found. com.sun.crypto.provider.HmacCore$HmacSHA384
前提说明
用户环境为Windows 10、Eclipse 2019-03 (4.11.0)、SVNKit Client Adapter 1.8.12.3,同团队其他用户相近环境无该问题,临时解决方案为使用Tortoise SVN替代操作。
问题1:如何彻底修复该报错?
三个方案任选其一即可:
- 方案1:升级SVNKit版本
你当前使用的1.8.x版本SVNKit存在已知的JCE加密组件兼容缺陷,直接在Eclipse插件管理中将SVNKit Client Adapter升级到1.10.x及以上稳定版本即可,该版本已修复Windows环境下加密算法偶发加载失败的问题。 - 方案2:替换Eclipse运行的JRE
当前Eclipse默认调用的内置JRE存在加密服务配置异常,将Eclipse运行环境替换为本地安装的官方Oracle JDK 8/11或OpenJDK 8/11即可。修改Eclipse安装目录下的eclipse.ini文件,在文件开头新增-vm参数指向本地JDK的javaw.exe路径,示例配置:
-vm C:\Program Files\Java\jdk1.8.0_301\bin\javaw.exe
- 方案3:切换SVN客户端实现
将Eclipse的SVN接口从SVNKit切换为JavaHL:先重新安装对应版本的Tortoise SVN,安装时勾选「JavaHL」组件,之后打开Eclipse的窗口>偏好设置>Team>SVN,将SVN接口选项修改为JavaHL即可。
问题2:缺失类的来源与配置方法
你报错中提到的com.sun.crypto.provider.HmacCore$HmacSHA384是SunJCE加密框架的内置实现类,默认存放在JRE目录下的lib/sunjce_provider.jar包中。
出现找不到类的原因是当前Eclipse使用的JRE的加密服务配置文件jre/lib/security/java.security被篡改,或SVNKit加载加密类时出现类加载冲突,导致对应加密算法的实现类无法被正常加载。
如果要单独修复配置:找到Eclipse当前使用的JRE目录,打开jre/lib/security/java.security文件,确认加密服务提供商列表中存在security.provider.N=com.sun.crypto.provider.SunJCE的配置项(N为数字,优先级建议在1-5之间),如果缺失该行配置,手动添加后重启Eclipse即可生效。
内容的提问来源于stack exchange,提问作者sdo
相关产品推荐
相关产品推荐

