java.lang.NoClassDefFoundError: Could not initialize class com.facebook.thrift.transport.TSocket

nebula 版本:2.6.1
部署方式:分布式
安装方式: Docker
是否为线上版本: N
硬件信息
磁盘( 推荐使用 SSD)
CPU、内存信息

pom版本信息:
<java.version>1.8</java.version>
<nebula.version>2.6.1</nebula.version>

Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.facebook.thrift.transport.TSocket
	at com.vesoft.nebula.client.graph.net.SyncConnection.open(SyncConnection.java:91)
	at com.vesoft.nebula.client.graph.net.RoundRobinLoadBalancer.ping(RoundRobinLoadBalancer.java:81)
	at com.vesoft.nebula.client.graph.net.RoundRobinLoadBalancer.updateServersStatus(RoundRobinLoadBalancer.java:67)
	at com.vesoft.nebula.client.graph.net.RoundRobinLoadBalancer.isServersOK(RoundRobinLoadBalancer.java:91)
	at com.vesoft.nebula.client.graph.net.ConnObjectPool.init(ConnObjectPool.java:88)
	at com.vesoft.nebula.client.graph.net.NebulaPool.init(NebulaPool.java:108)
	at com.qunar.flight.knowledge.graph.Client.NebulaPoolCreate.getNebulaPoolInstance(NebulaPoolCreate.java:56)
	at com.qunar.flight.knowledge.graph.impl.QueryService.init(QueryService.java:53)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)

用maven helper没有发现有依赖冲突;之前用nebula 2.0.1版本没有问题,后面pom文件改成 2.6.1 就报这个错了

不是这个原因吗?你程序里有引入包吗

nebula就这一个包吧

<groupId>com.vesoft</groupId>
<artifactId>client</artifactId>
<version>2.6.1</version>

不不,上面的回复的意思是,你的 tsocket 是不是多次引用了依赖包,不是 Nebula 的包。

idea中的maven helper 中没有包冲突,我怎么找这个问题呢

在idea中我ctrl+n,搜索TSocket这个类,只有vesoft有这个类

查看项目是否有引入了其他版本的thrift依赖

有引入dubbo的thrift。org.apache.dubbo.rpc.protocol.thrift。idea中没有检测到包冲突,确定是包冲突引起的吗?

大神,求助啊,帮忙看下

因为这个问题经常遇到,确定是包冲突了,你看下包。

我用 com.vesoft 2.0.1这个版本,也有这个类:com.facebook.thrift.transport.TSocket ,为什么这个版本没有问题。

我也遇到到了这个问题,你解决了?

我也遇到了,还没解决

还没解决 我把thrift包也移除了,还是报相同的错

你看下引用的其他包里是不是有 thrift


将本地项目的中pom配置的日志和nebula-java-2.6.1保持一致就可以了。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。