2014-08-28 75 views
0

我試圖通過Titan-Node連接到由Cassandra(通過Rexster Titan-Server包安裝)支持的Titan。找不到實現類:「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'); 

配置:

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,這都是該類的名稱,它找不到在異常消息中報告的實現。

如果你在這裏的代碼看起來...

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。這是自6月19日以來的一個已知問題,但似乎沒有人關心。 – 2014-09-01 08:34:08

+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,會發生什麼情況?不是一個真正的答案或修復,但可能是一種解決方法。 – 2014-09-01 08:49:43

+0

@DanLaRocque我已經更新了這個問題。 – 2014-09-01 16:10:22

回答

1

此時titan-node支持Titan 0.4.1 java jar文件。 您可以通過替換新的Titan jar文件來升級它。 然後你可以使用代碼波紋管連接到泰坦

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安裝中的jar版本。 – 2014-09-02 10:12:41