java.lang.CompatibleClassChangeError:在hbase中使用titan时实现类

java.lang.CompatibleClassChangeError:在hbase中使用titan时实现类,java,hbase,titan,Java,Hbase,Titan,我试图通过Java将Titan与HBase一起使用,但收到以下错误: Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.sec

我试图通过Java将Titan与HBase一起使用,但收到以下错误:

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.thinkaurelius.titan.diskstorage.Backend.instantiate(Backend.java:342)
    at com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:367)
    at com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:311)
    at com.thinkaurelius.titan.diskstorage.Backend.<init>(Backend.java:121)
    at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.getBackend(GraphDatabaseConfiguration.java:1173)
    at com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.<init>(StandardTitanGraph.java:75)
    at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:40)
    at ...
我正在使用IBMOpenPlatform 4.2.0作为我的hadoop安装,上面这些JAR来自各种来源,如hadoop、hbase、titan、zookeeper等的lib文件夹


任何帮助都将不胜感激

主泰坦pom在第60行有一个兼容性列表 泰坦博士也是如此

我的第一个猜测是你的hbase版本太新了,但我会在那里查看兼容性列表。在其他子项目中也有pom.xml文件,如果没有这些文件,我会仔细查看

顺便说一下,TitanDB不再维护。一个Linux基金会项目的JaNeScript,已经在泰坦的支持下获得了一些支持。p> JanusGraph文档表明它与您正在使用的HBase版本兼容。

我认为您的类路径中包含了许多JAR,其中有两个版本:

  • 一个是IBM(开放平台)版本xxxx-1.2.0-IBM-7.jar
  • 另一个是社区版本xxxx.jar

  • 更低版本xxxx-2.7.7.jar
  • 更高版本xxxx-3.2.jar
它们可能有不同的实现,这可能会导致出现这种异常

例如:

... hbase-server-1.2.0-IBM-7.jar hbase-server.jar hbase-shell-1.2.0-IBM-7.jar hbase-shell.jar hbase-thrift-1.2.0-IBM-7.jar hbase-thrift.jar ... antlr-2.7.7.jar antlr-3.2.jar antlr-runtime-3.2.jar antlr-runtime-3.5.2.jar ... ... hbase-server-1.2.0-IBM-7.jar hbase-server.jar hbase-shell-1.2.0-IBM-7.jar hbase-shell.jar hbase-thrift-1.2.0-IBM-7.jar hbase-thrift.jar ... antlr-2.7.7.jar antlr-3.2.jar antlr-runtime-3.2.jar antlr-runtime-3.5.2.jar ... iop中titan lib目录(/usr/iop/current/titan client/lib)下的JAR足以让java代码连接到hbase

gremlin控制台也是一个基于java的程序,您可以将其作为参考,在以下脚本中检查类路径定义:

  • /usr/iop/current/titan-client/bin/gremlin.distro
  • /usr/iop/current/titan-client/conf/titan-env.sh

是否在调试模式下运行?不,不是在调试模式下运行。 ... hbase-server-1.2.0-IBM-7.jar hbase-server.jar hbase-shell-1.2.0-IBM-7.jar hbase-shell.jar hbase-thrift-1.2.0-IBM-7.jar hbase-thrift.jar ... antlr-2.7.7.jar antlr-3.2.jar antlr-runtime-3.2.jar antlr-runtime-3.5.2.jar ...