Zookeeper启动报错:远程主机强迫关闭了一个现有的连接。

1 报错的具体场景

在cmd终止了占用2181端口的所有进程之后,再次运行zkServer.cmd命令,能够正常启动Zookeeper,但是**启动作为服务提供者的使用dubbo配置的springboot项目时,

zookeeper服务端的命令行出现以下错误**:

2023-05-05 20:42:43,850 [myid:] - WARN  [NIOWorkerThread-3:NIOServerCnxn@380] - Close of session 0x1000269cc9c0000
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
        at sun.nio.ch.SocketDispatcher.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
        at sun.nio.ch.IOUtil.read(IOUtil.java:197)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:378)
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:331)
        at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:508)
        at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:154)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2023-05-05 20:43:06,006 [myid:] - WARN  [NIOWorkerThread-4:NIOServerCnxn@380] - Close of session 0x0
java.io.IOException: Len error. A message from /127.0.0.1:9413 with advertised length of 1195725856 is either a malformed message or too large to process (length is greater than jute.maxbuffer=1048575)
        at org.apache.zookeeper.server.NIOServerCnxn.readLength(NIOServerCnxn.java:549)
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:339)
        at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:508)
        at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:154)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2023-05-05 20:43:07,064 [myid:] - WARN  [NIOWorkerThread-5:NIOServerCnxn@380] - Close of session 0x0
java.io.IOException: Len error. A message from /127.0.0.1:9414 with advertised length of 1195725856 is either a malformed message or too large to process (length is greater than jute.maxbuffer=1048575)
        at org.apache.zookeeper.server.NIOServerCnxn.readLength(NIOServerCnxn.java:549)
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:339)
        at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:508)
        at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:154)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

而此时springboot的应用主程序端则报错如下:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-05-07 13:39:14.921 ERROR 5000 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Extension instance (name: registry, class: interface org.apache.dubbo.rpc.Protocol) couldn't be instantiated: null
	at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:691) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:445) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:429) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:518) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:339) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:314) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.export(ServiceConfig.java:238) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.exportService(DubboBootstrap.java:1099) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.lambda$exportServices$14(DubboBootstrap.java:1086) ~[dubbo-2.7.15.jar:2.7.15]
	at java.util.HashMap$Values.forEach(HashMap.java:981) ~[na:1.8.0_301]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.exportServices(DubboBootstrap.java:1070) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.start(DubboBootstrap.java:886) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onContextRefreshedEvent(DubboBootstrapApplicationListener.java:70) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onApplicationContextEvent(DubboBootstrapApplicationListener.java:63) ~[dubbo-2.7.15.jar:2.7.15]
	at com.alibaba.spring.context.OnceApplicationContextEventListener.onApplicationEvent(OnceApplicationContextEventListener.java:52) ~[spring-context-support-1.0.11.jar:na]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
	at com.example.gmall.BootUserServiceProviderApplication.main(BootUserServiceProviderApplication.java:14) [classes/:na]
Caused by: java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_301]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_301]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_301]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_301]
	at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:661) ~[dubbo-2.7.15.jar:2.7.15]
	... 30 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/NodeCacheListener
	at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_301]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_301]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_301]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[na:1.8.0_301]
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[na:1.8.0_301]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[na:1.8.0_301]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[na:1.8.0_301]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_301]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createTargetDataListener(CuratorZookeeperClient.java:221) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createTargetDataListener(CuratorZookeeperClient.java:53) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.lambda$addDataListener$3(AbstractZookeeperClient.java:119) ~[dubbo-2.7.15.jar:2.7.15]
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_301]
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.addDataListener(AbstractZookeeperClient.java:119) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.doAddListener(ZookeeperDynamicConfiguration.java:119) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration.addListener(TreePathDynamicConfiguration.java:102) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.lambda$addListener$0(CompositeDynamicConfiguration.java:45) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.iterateListenerOperation(CompositeDynamicConfiguration.java:87) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.addListener(CompositeDynamicConfiguration.java:45) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl.addListener(DefaultGovernanceRuleRepositoryImpl.java:28) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository.addListener(GovernanceRuleRepository.java:34) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.AbstractConfiguratorListener.initWith(AbstractConfiguratorListener.java:45) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener.<init>(RegistryProtocol.java:753) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.RegistryProtocol.<init>(RegistryProtocol.java:142) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.<init>(InterfaceCompatibleRegistryProtocol.java:38) ~[dubbo-2.7.15.jar:2.7.15]
	... 35 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.recipes.cache.NodeCacheListener
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301]
	... 63 common frames omitted

2. 解决办法

需要理解的是,这里的报错到底是由于zookeeper服务端的问题还是springboot应用程序配置的问题?因为这里zookeeper服务端和springboot应用程序端都报告了不同的运行错误。但是,通过重现bug可知,纯粹的启动zookeeper服务端是没有任何bug的,只是当启动了springboot主应用之后,才让zookeeper服务端也开始报错。

修改了springboot应用的server.port, 依旧报错;修改了zookeeper的使用版本从3.7.1到3.5.10,确保能与Java的版本8匹配,但是依旧报错;

当尝试修改curator的版本时,又出现两种类型的错误,当使用的dubbo-spring-boot-starter的版本固定为2.7.15时,如果curator的版本设置为2.8.0,则报错如下java.lang.IllegalStateException: Failed to connect with zookeeper, pls check if url zookeeper://127.0.0.1:2181/ConfigCenterConfig?check=true&config-file=dubbo.properties&group=dubbo&highest-priority=false&timeout=3000 is correct:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-05-07 13:58:56.441 ERROR 23120 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to connect with zookeeper, pls check if url zookeeper://127.0.0.1:2181/ConfigCenterConfig?check=true&config-file=dubbo.properties&group=dubbo&highest-priority=false&timeout=3000 is correct.
	at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:69) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:43) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39) ~[dubbo-2.7.15.jar:2.7.15]
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_301]
	at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:224) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:1024) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:619) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.initialize(DubboBootstrap.java:521) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.start(DubboBootstrap.java:881) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onContextRefreshedEvent(DubboBootstrapApplicationListener.java:70) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onApplicationContextEvent(DubboBootstrapApplicationListener.java:63) ~[dubbo-2.7.15.jar:2.7.15]
	at com.alibaba.spring.context.OnceApplicationContextEventListener.onApplicationEvent(OnceApplicationContextEventListener.java:52) ~[spring-context-support-1.0.11.jar:na]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
	at com.example.gmall.BootUserServiceProviderApplication.main(BootUserServiceProviderApplication.java:14) [classes/:na]

如果curator的版本设置为java.lang.IllegalStateException: Extension instance (name: registry, class: interface org.apache.dubbo.rpc.Protocol) couldn’t be instantiated: null, 代码如下:

java.lang.IllegalStateException: Extension instance (name: registry, class: interface org.apache.dubbo.rpc.Protocol) couldn't be instantiated: null
	at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:691) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:445) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:429) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:518) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:339) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:314) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.ServiceConfig.export(ServiceConfig.java:238) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.exportService(DubboBootstrap.java:1099) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.lambda$exportServices$14(DubboBootstrap.java:1086) ~[dubbo-2.7.15.jar:2.7.15]
	at java.util.HashMap$Values.forEach(HashMap.java:981) ~[na:1.8.0_301]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.exportServices(DubboBootstrap.java:1070) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.start(DubboBootstrap.java:886) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onContextRefreshedEvent(DubboBootstrapApplicationListener.java:70) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onApplicationContextEvent(DubboBootstrapApplicationListener.java:63) ~[dubbo-2.7.15.jar:2.7.15]
	at com.alibaba.spring.context.OnceApplicationContextEventListener.onApplicationEvent(OnceApplicationContextEventListener.java:52) ~[spring-context-support-1.0.11.jar:na]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
	at com.example.gmall.BootUserServiceProviderApplication.main(BootUserServiceProviderApplication.java:14) [classes/:na]
Caused by: java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_301]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_301]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_301]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_301]
	at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:661) ~[dubbo-2.7.15.jar:2.7.15]
	... 30 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/NodeCacheListener
	at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_301]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_301]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_301]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[na:1.8.0_301]
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[na:1.8.0_301]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[na:1.8.0_301]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[na:1.8.0_301]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_301]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createTargetDataListener(CuratorZookeeperClient.java:221) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createTargetDataListener(CuratorZookeeperClient.java:53) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.lambda$addDataListener$3(AbstractZookeeperClient.java:119) ~[dubbo-2.7.15.jar:2.7.15]
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_301]
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.addDataListener(AbstractZookeeperClient.java:119) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.doAddListener(ZookeeperDynamicConfiguration.java:119) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration.addListener(TreePathDynamicConfiguration.java:102) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.lambda$addListener$0(CompositeDynamicConfiguration.java:45) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.iterateListenerOperation(CompositeDynamicConfiguration.java:87) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.addListener(CompositeDynamicConfiguration.java:45) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl.addListener(DefaultGovernanceRuleRepositoryImpl.java:28) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository.addListener(GovernanceRuleRepository.java:34) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.AbstractConfiguratorListener.initWith(AbstractConfiguratorListener.java:45) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener.<init>(RegistryProtocol.java:753) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.RegistryProtocol.<init>(RegistryProtocol.java:142) ~[dubbo-2.7.15.jar:2.7.15]
	at org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.<init>(InterfaceCompatibleRegistryProtocol.java:38) ~[dubbo-2.7.15.jar:2.7.15]
	... 35 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.recipes.cache.NodeCacheListener
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301]
	... 63 common frames omitted

后来无论怎么修改curator的版本,都会出现以上两种报错的其中一种,于是尝试修改dubbo的版本从2.x到3.x,比如3.0.7,但是出现新的报错为java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/NodeCacheListener:

java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/NodeCacheListener
	at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_301]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_301]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_301]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[na:1.8.0_301]
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[na:1.8.0_301]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[na:1.8.0_301]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[na:1.8.0_301]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_301]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createTargetDataListener(CuratorZookeeperClient.java:279) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createTargetDataListener(CuratorZookeeperClient.java:58) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.lambda$addDataListener$3(AbstractZookeeperClient.java:123) ~[dubbo-3.0.7.jar:3.0.7]
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_301]
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.addDataListener(AbstractZookeeperClient.java:123) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.doAddListener(ZookeeperDynamicConfiguration.java:134) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration.addListener(TreePathDynamicConfiguration.java:102) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.lambda$addListener$0(CompositeDynamicConfiguration.java:54) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.iterateListenerOperation(CompositeDynamicConfiguration.java:108) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.addListener(CompositeDynamicConfiguration.java:54) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl.addListener(DefaultGovernanceRuleRepositoryImpl.java:36) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository.addListener(GovernanceRuleRepository.java:36) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.integration.AbstractConfiguratorListener.initWith(AbstractConfiguratorListener.java:74) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener.<init>(RegistryProtocol.java:827) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.integration.RegistryProtocol.lambda$getProviderConfigurationListener$6(RegistryProtocol.java:794) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.common.beans.factory.ScopeBeanFactory.getOrRegisterBean(ScopeBeanFactory.java:146) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.common.beans.factory.ScopeBeanFactory.getOrRegisterBean(ScopeBeanFactory.java:136) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.integration.RegistryProtocol.getProviderConfigurationListener(RegistryProtocol.java:793) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.integration.RegistryProtocol.getProviderConfigurationListener(RegistryProtocol.java:789) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:234) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:64) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:74) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:58) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.export(ProtocolSerializationWrapper.java:47) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.doExportUrl(ServiceConfig.java:641) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.exportRemote(ServiceConfig.java:619) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.exportUrl(ServiceConfig.java:578) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:410) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:396) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:361) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.ServiceConfig.export(ServiceConfig.java:233) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.exportServiceInternal(DefaultModuleDeployer.java:341) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.exportServices(DefaultModuleDeployer.java:313) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:145) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onContextRefreshedEvent(DubboDeployApplicationListener.java:111) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:100) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:45) ~[dubbo-3.0.7.jar:3.0.7]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.6.jar:5.3.6]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
	at com.example.gmall.BootUserServiceProviderApplication.main(BootUserServiceProviderApplication.java:14) [classes/:na]
Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.recipes.cache.NodeCacheListener
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301]
	... 65 common frames omitted

现在这个问题仍然无法解决,完全是按照b站上尚硅谷的dubbo源码敲的,不知道为啥一直有各种问题,如果有遇到相同问题的小伙伴,不吝赐教不胜感激。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值