2015-10-04 43 views
0

我有一個Java代碼片斷連接泰坦DB - 拋出一個異常

TitanGraph g = TitanFactory.open("titan-all-0.4.4/conf/titan-berkeleydb.properties"); 

其中titan-berkeleydb的.properties是自帶的泰坦數據庫安裝在建的配置文件。

在執行時,它拋出一個異常

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.isNotBlank(Ljava/lang/String;)Z 

at com.thinkaurelius.titan.graphdb.configuration.KCVSConfiguration.<init>(KCVSConfiguration.java:40) 
at com.thinkaurelius.titan.diskstorage.Backend.initialize(Backend.java:273) 
at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.getBackend(GraphDatabaseConfiguration.java:1174) 
at com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.<init>(StandardTitanGraph.java:75) 
at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:40) 
at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:29) 

是否有解決這個問題的方法嗎?

回答

2

如果您使用的是網絡應用程序與Tomcat,您必須將jar文件添加到應用程序的WEB-INF/lib文件夾(或到$ TOMCAT_HOME/lib文件夾,如果你有使用它更多的webapps)。

或者用這個jar創建一個庫並將其添加到項目類路徑中。

如果你所做的這一切,它仍然沒有工作,你可以改變jar擴展ziprar並打開它,看看是否需要請求的類都在裏面。

+0

我已經完成了您提到的初始步驟。我只是確認commons-lang-2.5.jar有'StringUtils'類,並且定義了'isNotBlank'方法。 (爲此拋出異常) – PJoshi

+0

您是否導入了類? – roeygol

+0

我在我的項目中通過構建配置導入了commons-lang-2.5.jar文件。 – PJoshi

1

檢查您的classpath是否有另一個commons-lang - *。jar。根據Apache Commons文檔,isBlank()方法是2.0以來的新增功能。 https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/StringUtils.html#isBlank%28java.lang.String%29

泰坦0.4.4隨libs目錄下的commons-lang-2.5.jar附帶。你原來的文章沒有提到有關運行時環境的其他內容。例如,如果你在類路徑中使用了commons-lang-1.0.1.jar,那麼它會在commons-lang-2.5.jar之前找到,你會看到錯誤。

+0

我正在使用commons-lang-2.5.jar。我沒有這個jar的另一個版本。有沒有辦法在代碼中發現這個異常是從泰坦拋出的?那我可以在哪裏獲得KCVSConfiguration.java,Backend.java,GraphDatabaseConfiguration.java,StandardTitanGraph的代碼? – PJoshi

+1

這不是泰坦問題。您的環境中存在問題。爲了重現您的錯誤,我從https://github.com/thinkaurelius/titan/wiki/Downloads中提取了titan-all-0.4.4.zip,然後從這裏獲取commons-lang-1.0.1.jar http: //archive.apache.org/dist/commons/lang/binaries/。如果我解壓縮titan-all-0.4.4.zip,我可以使用berkeley屬性從gremlin.sh控制檯打開一個TitanGraph。如果我將commons-lang-1.0.1.jar複製到lib目錄中,它會引發您看到的確切異常。 –

+0

瀏覽你的類路徑,以確保你沒有收到任何意外的東西。您是否在類路徑中包含除TITAN_HOME/lib/*以外的任何內容? –