Can't find bundle for base name com/sun/org/apache/xml/internal/security/resource/xmlsecurity, local

21 篇文章 0 订阅

       最近在用jboss部署项目,发现了同一项目在不同机器上运行有的机器好使,有的机器不好使。折磨了自己2天,最终找到原因是虚拟机上的JDK的问题。


      事情是这样的:我们项目中加密方式涉及到了base64,该方法引用的是jdk中rt.jar中的方法。当我在甲服务器上运行项目,启动没问题,调用接口也正常。当我把甲上的项目拷贝到乙服务器上运行,启动正常。当解密的时候报Can't find bundle for base name com/sun/org/apache/xml/internal/security/resource/xmlsecurity, locale en_US,让我很诧异,因为我已经将rt.jar包放到项目的lib下面了。按理说不应该有问题,况且其他项目用的时候也正常。然后我就讲rt.jar包解压开查看,发现此包下真的没有resource/xmlsecurity。那么问题来了,是啥原因呢?上网搜了一下好多说是找不到所要获取的文件,没办法反编译rt.jar,发现com\sun\org\apache\xml\internal\security下有一个Init.class,将其反编译后有如下line 70  return super.getClass().getResourceAsStream("resource/config.xml");

我猜测应该是此文件没有找到。我就按照报错路径在项目里增加了此名的空文件,发现报错地方过去了。我恍然大悟,找到JDK,发现jdk下的jre/lib中果然还有另一个包:resources.jar。里面果然有需要的文件:config.xml和xmlsecurity_en.properties,将此包增加到乙机器的项目下,重启后都好使了。到此算是解决了加解密问题。但此时还是有个疑问,为什么linux上只需要rt.jar,有的linux上还需要jdk中的resource.jar呢,麻烦路过的大神讲解一下,感谢!!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值