【发布时间】:2014-10-22 18:56:25
【问题描述】:
我正在尝试通过 Titan-Node 连接到由 Cassandra 支持的 Titan(随 Rexster Titan-Server 软件包一起安装)。
我得到了错误...
java.lang.IllegalArgumentException:找不到实现 类:“卡桑德拉”
...当我运行以下代码时....
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 包中的目标/依赖文件夹中似乎都有所需的 .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方法使用getImplementationClass中的调用传入的消息中的方法参数clazzname。后者应该通过storage.backend 中设置的键查找要加载的类,但奇怪的是它似乎没有找到任何东西,所以它按原样使用该值。即使这样,即使你直接设置它仍然找不到类。所以这里还有第二个谜。
我想我必须通过 Rexster 才能解决此问题。
【问题讨论】:
-
检查github.com/inolen/titan-node/issues/9。这是自 6 月 19 日以来的一个已知问题,但似乎没有人关心。
-
我commented on the issue。如果将 storage.backend 设置为 com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftStoreManager 或 com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager 会发生什么?不是真正的答案或修复,但可能是一种解决方法。
-
@DanLaRocque 我已经更新了问题。
标签: java node.js cassandra titan