如何解决java.lang.SecurityException:?

时间:2017-10-30 09:57:40

标签: java

如何解决安全漏洞?

它显示客户端中的以下错误。如何解决?

  

java.lang.SecurityException异常:类   “org.apache.commons.io.output.ByteArrayOutputStream”的签名者   信息与其他类的签名者信息不匹配   相同的包

1 个答案:

答案 0 :(得分:0)

你的类路径中有多个包含相同类的Jars。其中一个或多个已签名。如果Jar已签名,如果一个类来自一个Jar而另一个类来自另一个类,则可能会出现此错误。这种情况大部分时间都会发生,如果你有不同版本的Jars或者将其他库的类添加到自己的Jar中的库。

找到罪魁祸首并修复它,并不是一个简单的过程。到目前为止,我发现的最简单的方法是在bash-shell的for循环中使用grepjar tf。这显然意味着你需要一个Unix系统或Cygwin:

for i in *.jar; do
    jar tf "$i" | grep ByteArrayOutputStream | grep -c commons > /dev/null && echo "$i"
done

Powershell可能会带来类似的功能,但我不知道Powershell。

这个简短的脚本输出所有的jar,包含一类包 .commons。 .ByteArrayOutputStream。在我的例子中,只输出了commons-io-1.0.jar但你应该看到多个文件名。下一步是找出这些特殊罐子在你的类路径中的原因,并决定下一步,比如删除其中一个罐子等。