Java反射(reflect)getConstructor NoSuchMethodException错误

标签 java reflection getconstructor

我有一个名为 ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage 的类,定义如下

public class ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage
        extends java.lang.Exception {

    private static final long serialVersionUID = 1354218639401L;

    public ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage() {
        super("ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage");
    }

    public ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage(
            java.lang.String s) {
        super(s);
    }

    public ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage(
            java.lang.String s, java.lang.Throwable ex) {
        super(s, ex);
    }

    public ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage(
            java.lang.Throwable cause) {
        super(cause);
    }
}

我正在努力

java.lang.String exceptionClassName = (java.lang.String)faultExceptionClassNameMap.get(new org.apache.axis2.client.FaultMapKey(faultElt.getQName(),"Capture"));
                    LOGGER.debug("ExceptionClassName"+exceptionClassName);
                    java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
                    java.lang.reflect.Constructor constructor = exceptionClass.getConstructor(String.class);

其中 exceptionClass 是日志中的 ICwsTransactionProcessing_Capture_CWSInvalidOperationFaultFault_FaultMessage

我收到NoSuchMethodException。为什么?

最佳答案

这是 wsdl2java 生成的客户端 stub 代码中的 Axis2 错误。

https://issues.apache.org/jira/browse/AXIS2-5420

生成的代码中使用的 String 类应该是 java.lang.String,但由于 WSDL 导入使用 Microsoft 序列化类型,Axis2 已生成名为 String 的内部类。

正确的代码生成应该使用java.lang.String作为构造函数反射参数。

这有点难以发现,因为生成的 stub 有 20 万多行。

该错误已在未发布的 Axis2 1.6.3 和 1.7 分支中修复。

谢谢大家的帮助。

关于Java反射(reflect)getConstructor NoSuchMethodException错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14113523/

相关文章:

php - 获取扩展类的类的 PHP 类名?

c# - 执行 XmlDocument 类型的 CustomAttributeBuilder 时出错

c# - 获取不是由编译器生成的反射字段

java - getConstructor() 在被 Class 类型变量调用时返回 NoSuchMethodException

Java 反射 getConstructor 方法

java - 如何使用 Junit5 在 junit 4 中创建测试套件

java - 重写方法以从索引中删除项目并将索引中所有剩余项目数减去 1

java - 如何在 JOptionPane 对话框中输出一个 int?

java - 如何将带有 jdbc 准备语句的 SqlDescriptor 写入 tsrange 列?

c# - 如何在C#中使用反射获取方法的所有属性和属性数据