我用java开发的。但是连接的时候总报这个错误。我是一个菜鸟,求大神求助啊
Exception in thread "main" java.lang.ExceptionInInitializerError
at javax.crypto.Mac.getInstance(Mac.java:171)
at com.aliyun.oss.common.auth.HmacSHA1Signature.sign(HmacSHA1Signature.java:63)
at com.aliyun.oss.common.auth.HmacSHA1Signature.computeSignature(HmacSHA1Signature.java:43)
at com.aliyun.oss.internal.OSSRequestSigner.sign(OSSRequestSigner.java:37)
at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:150)
at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:133)
at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:68)
at com.aliyun.oss.internal.OSSObjectOperation.getObject(OSSObjectOperation.java:190)
at com.aliyun.oss.internal.OSSObjectOperation.getObject(OSSObjectOperation.java:231)
at com.aliyun.oss.OSSClient.getObject(OSSClient.java:385)
at cn.edsport.web.controller.pub.Demo.main(Demo.java:40)
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at javax.crypto.JceSecurity.<clinit>(JceSecurity.java:86)
... 11 more
Caused by: java.lang.SecurityException: The jurisdiction policy files are not signed by a trusted signer!
at javax.crypto.JarVerifier.verifyPolicySigned(JarVerifier.java:289)
at javax.crypto.JceSecurity.loadPolicies(JceSecurity.java:318)
at javax.crypto.JceSecurity.setupJurisdictionPolicies(JceSecurity.java:263)
at javax.crypto.JceSecurity.access$000(JceSecurity.java:48)
at javax.crypto.JceSecurity$1.run(JceSecurity.java:78)
at java.security.AccessController.doPrivileged(Native Method)
at javax.crypto.JceSecurity.<clinit>(JceSecurity.java:76)
... 11 more
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明你的Java应用在尝试使用加密功能时遇到了问题,具体来说是与JCE(Java Cryptography Extension)相关的权限和策略文件问题。错误信息中提到的“jurisdiction policy files are not signed by a trusted signer”意味着你的Java环境中缺少或未正确配置了受信任的政策文件。
针对阿里云OSS Java SDK的使用中遇到的这个问题,你可以按照以下步骤尝试解决:
检查Java版本:确保你使用的Java版本与阿里云OSS Java SDK兼容。推荐使用较新的Java 8或更高版本,并确认它是否支持你需要的加密算法。
安装/更新无限制强度管辖策略文件:
local_policy.jar
和US_export_policy.jar
复制到你的JDK安装目录下的jre/lib/security/
目录,覆盖原有的文件。注意:从Java 9开始,JCE策略文件不再需要单独安装,因为默认已启用无限制的加密策略。
验证JVM启动参数:确认没有通过JVM启动参数禁用了加密服务或指定了不正确的安全策略文件路径。
清理并重启应用:完成上述步骤后,清理你的项目(如删除target目录、IDE的工作空间缓存等),然后重新编译和启动你的应用。
检查依赖冲突:如果问题依旧,检查你的项目依赖是否有潜在的冲突,特别是与加密库相关的依赖。
如果以上步骤不能解决问题,建议查看阿里云OSS Java SDK的官方文档或在阿里云开发者论坛寻求帮助,可能有其他用户遇到过类似的问题并分享了解决方案。