2014-08-28 6 views
0

Я пытаюсь подключиться к Titan, поддерживаемому Cassandra (установленным с пакетом Rexster Titan-Server) через Titan-Node.Не удалось найти класс реализации: «cassandra»

я получаю ошибку ...

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'); 

Config:

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

Любые идеи?

У меня, кажется, есть требуемый .jar в папке установки Titan, а также в папке target/dependency в пакете Titan-Node.

Почему Java не может найти файл? Есть ли отсутствующая запись в классе? Если так, то это нужно установить для базы данных или для узла? Я полагаю, что это будет узел, потому что это приложение пытается загрузить класс.

EDIT

предложение Дэн дал мне ....

«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, но, как ни странно, он не находит ничего, поэтому он использует значение как есть. Тем не менее, он все еще не может найти класс, даже если вы установите его напрямую. Итак, здесь есть вторая тайна.

Я полагаю, что мне придется пройти через Рекстер, пока это не будет исправлено.

+1

Проверьте https://github.com/inolen/titan-node/issues/9. Это известная проблема с 19 июня, но никто, похоже, не заботится. –

+1

Я [прокомментировал проблему] (https://github.com/inolen/titan-node/issues/9#issuecomment-54035406). Что произойдет, если вы установите storage.backend на com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftStoreManager или com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager? Не совсем ответ или исправление, но, возможно, это обходное решение. –

+0

@DanLaRocque Я обновил вопрос. –

ответ

1

В это время titan-узел поддерживает файлы java jar Titan 0.4.1. Вы можете обновить его, заменив новые файлы баннеров Titan. Затем вы можете использовать код ниже для подключения к 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'); 
    }); 
}); 
+0

Да, это то, что у меня есть. Я загрузил более раннюю версию Titan Server в соответствии с версией баннеров в установке Titan-Node. –

Смежные вопросы