【问题标题】:Java XmlRpc server fails with NoSuchMethodException for Encodings.isRecognizedEncodingJava XmlRpc 服务器因 Encodings.isRecognizedEncoding 出现 NoSuchMethodException 而失败
【发布时间】:2019-11-02 09:07:57
【问题描述】:

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)

类路径包括

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);
        ...

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

【问题讨论】:

    标签: java xml-parsing xerces xalan


    【解决方案1】:

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

    我使用的是 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 也解决了这个问题。

    【讨论】:

    • 正在安装 xalan-2.7.1。直接来自 Apache repo 似乎没有帮助。我已经删除了 openJDK 8.0 附带的 xalan-2j-serializer.jar 和 xalan-2.jar 并安装了 xalan-2.7.1。同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 2015-06-19
    • 1970-01-01
    • 2020-08-02
    • 2014-07-02
    相关资源
    最近更新 更多