开发者社区 问答 正文

连接OSS出问题了。

我用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

展开
收起
myworldlife 2015-02-10 15:40:07 10663 分享 版权
阿里云 AI 助理回答

这个错误信息表明你的Java应用在尝试使用加密功能时遇到了问题,具体来说是与JCE(Java Cryptography Extension)相关的权限和策略文件问题。错误信息中提到的“jurisdiction policy files are not signed by a trusted signer”意味着你的Java环境中缺少或未正确配置了受信任的政策文件。

针对阿里云OSS Java SDK的使用中遇到的这个问题,你可以按照以下步骤尝试解决:

  1. 检查Java版本:确保你使用的Java版本与阿里云OSS Java SDK兼容。推荐使用较新的Java 8或更高版本,并确认它是否支持你需要的加密算法。

  2. 安装/更新无限制强度管辖策略文件

    • 对于Oracle JDK或OpenJDK,需要安装“Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files”。这些文件解除了对某些加密算法的限制。
      • 访问Oracle官网下载适合你Java版本的无限制强度JCE策略文件。
      • 下载后,将local_policy.jarUS_export_policy.jar复制到你的JDK安装目录下的jre/lib/security/目录,覆盖原有的文件。

    注意:从Java 9开始,JCE策略文件不再需要单独安装,因为默认已启用无限制的加密策略。

  3. 验证JVM启动参数:确认没有通过JVM启动参数禁用了加密服务或指定了不正确的安全策略文件路径。

  4. 清理并重启应用:完成上述步骤后,清理你的项目(如删除target目录、IDE的工作空间缓存等),然后重新编译和启动你的应用。

  5. 检查依赖冲突:如果问题依旧,检查你的项目依赖是否有潜在的冲突,特别是与加密库相关的依赖。

如果以上步骤不能解决问题,建议查看阿里云OSS Java SDK的官方文档或在阿里云开发者论坛寻求帮助,可能有其他用户遇到过类似的问题并分享了解决方案。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答