Java XmlRpc服务器由于Encodings.isRecognizedEncoding的NoSuchMethodException失败

时间:2019-06-19 15:06:17

标签: java xml-parsing xerces xalan

org.apache.xmlrpc.server.XmlRpcServer失败,传入请求出现NoSuchMethod异常:

Caused by: java.lang.NoSuchMethodError: org.apache.xml.serializer.Encodings.isRecognizedEncoding(Ljava/lang/String;)Z api-server_1 | at org.apache.xml.serializer.dom3.LSSerializerImpl.write(LSSerializerImpl.java:926)

classpath包括

  

xalan-j2-serializer.jar

    sh-4.2# jar tvf xalan-j2-serializer.jar | grep Encodings   
    7717 Tue Jan 01 00:00:00 UTC 1980 org/apache/xml/serializer/Encodings.class
11598 Tue Jan 01 00:00:00 UTC 1980 org/apache/xml/serializer/Encodings.properties

Encodings.class反编译:

sh-4.2# javap org.apache.xml.serializer.Encodings
Compiled from "Encodings.java"
public final class org.apache.xml.serializer.Encodings {  
        ...
        public org.apache.xml.serializer.Encodings();
        ...
        public static boolean isRecognizedEncoding(java.lang.String);
        ...

服务器正在Centos:7映像上的docker中运行。 OpenJDK Java 8。 客户端是一个Python2.7脚本,调用xmlrpclib.ServerProxy。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误消息。

我使用的是Axis2,我在Axis2 FAQ

中找到了
  

这在JDK 1.5环境中的Tomcat 4.x和5.0中特别发生。原因是系统选择了错误的变压器工厂等级。只需将xalan-2.7.0.jar放入axis2 / WEB-INF / lib目录即可解决

我将 xalan 替换为2.7.1版。

OpenSAML中报告了相同的错误消息。 通过将xalan也更新到版本2.7.1,可以解决该问题。