原因是 SentinelContractHolder 因为版本问题 调用的方法参数不正确需要重写此类 覆盖jar包自带的类
只需要在公共包当中新建
com.alibaba.cloud.sentinel.feign
新建SentinelContractHolder类
package com.alibaba.cloud.sentinel.feign;
import feign.Contract;
import feign.MethodMetadata;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 重新定义sentinel类解决报错问题
*/
public class SentinelContractHolder implements Contract {
private final Contract delegate;
public static final Map<String, MethodMetadata> METADATA_MAP = new HashMap();
public SentinelContractHolder(Contract delegate) {
this.delegate = delegate;
}
public List<MethodMetadata> parseAndValidateMetadata(Class<?> targetType) {
List<MethodMetadata> metadatas = this.delegate.parseAndValidatateMetadata(targetType);
metadatas.forEach((metadata) -> {
MethodMetadata var10000 = (MethodMetadata)METADATA_MAP.put(targetType.getName() + metadata.configKey(), metadata);
});
return metadatas;
}
@Override
public List<MethodMetadata> parseAndValidatateMetadata(Class<?> aClass) {
List<MethodMetadata> metadatas = this.delegate.parseAndValidatateMetadata(aClass);
metadatas.forEach((metadata) -> {
MethodMetadata var10000 = (MethodMetadata)METADATA_MAP.put(aClass.getName() + metadata.configKey(), metadata);
});
return metadatas;
}
}