sofastack / sofa-rpc

SOFARPC is a high-performance, high-extensibility, production-level Java RPC framework.
https://www.sofastack.tech/sofa-rpc/docs/Home
Apache License 2.0
3.81k stars 1.17k forks source link

SOFARPC使用注册中心进行泛化调用,SofaRpcRuntimeException异常 #1010

Closed wangchen111 closed 3 years ago

wangchen111 commented 3 years ago

Your question

泛化调用不想通过直连的方式进行,想通过配置注册中心进行调用,抛出异常com.alipay.sofa.rpc.core.exception.SofaRpcRuntimeException: com/alipay/sofa/registry/client/api/SubscriberDataObserver

Your scenes

com.alipay.sofa.rpc.core.exception.SofaRpcRuntimeException: com/alipay/sofa/registry/client/api/SubscriberDataObserver
    at com.alipay.sofa.rpc.common.utils.ClassUtils.newInstanceWithArgs(ClassUtils.java:241)
    at com.alipay.sofa.rpc.ext.ExtensionClass.getExtInstance(ExtensionClass.java:113)
    at com.alipay.sofa.rpc.registry.RegistryFactory.getRegistry(RegistryFactory.java:75)
    at com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap.subscribeFromRegistries(DefaultConsumerBootstrap.java:337)
    at com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap.subscribe(DefaultConsumerBootstrap.java:271)
    at com.alipay.sofa.rpc.client.AbstractCluster.init(AbstractCluster.java:153)
    at com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap.refer(DefaultConsumerBootstrap.java:154)
    at com.alipay.sofa.rpc.config.ConsumerConfig.refer(ConsumerConfig.java:926)
Caused by: java.lang.NoClassDefFoundError: com/alipay/sofa/registry/client/api/SubscriberDataObserver
    ... 18 more
Caused by: java.lang.ClassNotFoundException: com.alipay.sofa.registry.client.api.SubscriberDataObserver
    ... 18 more

com.alipay.sofa.rpc.core.exception.SofaRpcRuntimeException: com/alipay/sofa/registry/client/api/SubscriberDataObserver
    at com.alipay.sofa.rpc.common.utils.ClassUtils.newInstanceWithArgs(ClassUtils.java:241) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.ext.ExtensionClass.getExtInstance(ExtensionClass.java:113) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.registry.RegistryFactory.getRegistry(RegistryFactory.java:75) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap.subscribeFromRegistries(DefaultConsumerBootstrap.java:337) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap.subscribe(DefaultConsumerBootstrap.java:271) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.client.AbstractCluster.init(AbstractCluster.java:153) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap.refer(DefaultConsumerBootstrap.java:154) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    at com.alipay.sofa.rpc.config.ConsumerConfig.refer(ConsumerConfig.java:926) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
Caused by: java.lang.NoClassDefFoundError: com/alipay/sofa/registry/client/api/SubscriberDataObserver
    at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:1.8.0_181]
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[?:1.8.0_181]
    at java.lang.Class.getConstructor0(Class.java:3075) ~[?:1.8.0_181]
    at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[?:1.8.0_181]
    at com.alipay.sofa.rpc.common.utils.ClassUtils.newInstanceWithArgs(ClassUtils.java:202) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]
    ... 17 more
Caused by: java.lang.ClassNotFoundException: com.alipay.sofa.registry.client.api.SubscriberDataObserver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_181]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_181]
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93) ~[gateway.jar:1.0.0-SNAPSHOT]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_181]
    at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:1.8.0_181]
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[?:1.8.0_181]
    at java.lang.Class.getConstructor0(Class.java:3075) ~[?:1.8.0_181]
    at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[?:1.8.0_181]
    at com.alipay.sofa.rpc.common.utils.ClassUtils.newInstanceWithArgs(ClassUtils.java:202) ~[sofa-rpc-all-5.7.6.jar!/:5.7.6]

Your advice

代码如下

RegistryConfig registryConfig = new RegistryConfig().setProtocol("sofa").setAddress("192.168.2.138:9603");
ConsumerConfig<GenericService> consumerConfig  = new ConsumerConfig<GenericService>()
                .setInterfaceId("com.wc.server.service.PrintUserInfoService")
                .setGeneric(true)
                .setProtocol("bolt")
                .setRegistry(registryConfig);
        GenericService printUserInfoService = consumerConfig.refer();
Object user =  printUserInfoService.$invoke("printUserInfo",new String[]{"com.wc.server.entity.User"},new Object[]{reqData});

Environment

wangchen111 commented 3 years ago

问题以解决,关闭issue

ujjboy commented 3 years ago

没引入注册中心的 client jar 吧?