我尝试通过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
的值是什么,该类的名称都无法找到它在异常消息中报告的实现。
如果你在这里查看代码......
...抛出异常的instantiate
方法在clazzname
中的调用传入的消息中使用方法参数getImplementationClass
。后者应该通过storage.backend
中的密钥集来查找要加载的类,但奇怪的是它似乎找不到任何东西,所以它按原样使用该值。即便如此,即使你直接设置它,它仍然无法找到该类。所以这里有第二个谜。
我想在修复之前我必须通过Rexster。
答案 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');
});
});