找不到实施类:" cassandra"

时间:2014-08-28 19:45:57

标签: java node.js cassandra titan

我尝试通过Titan-Node连接到使用Cassandra(使用Rexster Titan-Server软件包安装)支持的Titan。

我收到了错误......

  

java.lang.IllegalArgumentException:无法找到实现   上课:" cassandra"

...当我运行以下代码时....

var Titan = require('titan-node');
var gremlin = new Titan.Gremlin({ loglevel: 'OFF' });

var TitanFactory = gremlin.java.import('com.thinkaurelius.titan.core.TitanFactory');
var graph = TitanFactory.openSync('titan.config');

配置:

storage.directory = "/tmp/titan"
storage.backend = "cassandra"
storage.hostname = "127.0.0.1"
storage.port = 9160

有什么想法吗?

我似乎在我的Titan安装文件夹中以及Titan-Node包中的target / dependency文件夹中有所需的.jar。

为什么Java无法找到该文件?是否缺少类路径条目?如果需要,是否需要为数据库或节点设置?我认为这将是节点,因为该应用程序试图加载该类。

修改

丹的建议给了我......

  

' java.lang.IllegalArgumentException:无法找到实现   类:   " com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftStoreManager"'

...和...

  

' java.lang.IllegalArgumentException:无法找到实现   类:   " com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager"'

...分别

实际上,无论您在配置中设置storage.backend的值是什么,该类的名称都无法找到它在异常消息中报告的实现。

如果你在这里查看代码......

https://github.com/thinkaurelius/titan/blob/master/titan-core/src/main/java/com/thinkaurelius/titan/diskstorage/Backend.java

...抛出异常的instantiate方法在clazzname中的调用传入的消息中使用方法参数getImplementationClass。后者应该通过storage.backend中的密钥集来查找要加载的类,但奇怪的是它似乎找不到任何东西,所以它按原样使用该值。即便如此,即使你直接设置它,它仍然无法找到该类。所以这里有第二个谜。

我想在修复之前我必须通过Rexster。

1 个答案:

答案 0 :(得分:1)

此时titan-node支持Titan 0.4.1 java jar文件。 您可以通过替换新的Titan jar文件来升级它。 然后你可以使用下面的代码连接到Titan

var Titan = require('titan-node');
var gremlin = new Titan.Gremlin({ loglevel: 'OFF' });

var BaseConfiguration = gremlin.java.import('org.apache.commons.configuration.BaseConfiguration');
var _confObj={'backend':'cassandra','hostname':'127.0.0.1'};
var TitanFactory = gremlin.java.import('com.thinkaurelius.titan.core.TitanFactory');

conf = new BaseConfiguration();
conf.setPropertySync("storage.backend",_confObj.backend);
conf.setPropertySync("storage.hostname",_confObj.hostname);
var graph = TitanFactory.openSync(conf);
var g = gremlin.wrap(graph);

g.addVertex(null, function (err, saturn) {
    console.log('added');
    g.commit(function() {
        console.log('commited');
    });
});