【问题标题】:Connecting Titan db through Java - throws an exception通过 Java 连接 Titan db - 引发异常
【发布时间】:2015-10-04 08:28:44
【问题描述】:

我有一个java代码sn-p

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

titan-berkeleydb.properties 是 Titan db 安装附带的内置配置文件。

执行时抛出异常

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)

有没有办法解决这个问题?

【问题讨论】:

    标签: java titan


    【解决方案1】:

    检查您的类路径以获取另一个 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

    Titan 0.4.4 在 lib 目录中附带 commons-lang-2.5.jar。您的原始帖子没有提及有关运行时环境的任何其他内容。我怀疑如果你在类路径中有 commons-lang-1.0.1.jar,它会在 commons-lang-2.5.jar 之前被拾取,你会看到错误。

    【讨论】:

    • 我正在使用 commons-lang-2.5.jar。我没有这个 jar 的另一个版本。有没有办法在代码中找出从泰坦抛出这个异常的地方?那我可以从哪里获得 KCVSConfiguration.java、Backend.java、GraphDatabaseConfiguration.java、StandardTitanGraph 的代码?
    • 这不是 Titan 问题。你的环境有问题。为了重现您的错误,我从github.com/thinkaurelius/titan/wiki/Downloads 提取了titan-all-0.4.4.zip,然后从archive.apache.org/dist/commons/lang/binaries 提取了commons-lang-1.0.1.jar。如果我解压缩 titan-all-0.4.4.zip,我可以从 gremlin.sh 控制台打开一个带有 berkeley 属性的 TitanGraph。如果我将 commons-lang-1.0.1.jar 复制到 lib 目录中,它会抛出您所看到的确切异常。
    • 检查您的类路径以确保您没有拾取任何意外。您是否在类路径中包含 TITAN_HOME/lib/* 以外的任何内容?
    • 谢谢!是的,我已经包含了一些不必要的库。当我删除它们时,它正在连接。
    【解决方案2】:

    如果您使用带有Tomcat 的Web 应用程序,则必须将jar 文件添加到应用程序的WEB-INF/lib 文件夹中(或添加到$TOMCAT_HOME/lib 文件夹中,如果您有更多的Web 应用程序使用它) .

    要么用这个 jar 创建一个库并将其添加到项目类路径中。

    如果您完成了所有这些操作,但仍然无法正常工作,您可以将jar 扩展名更改为ziprar,然后打开它以查看您需要的请求的类是否在里面。

    【讨论】:

    • 我已经完成了你提到的初始步骤。我刚刚确认 commons-lang-2.5.jar 具有类“StringUtils”并定义了方法“isNotBlank”。 (抛出异常)
    • 你导入了类吗?
    • 我在项目中通过构建配置导入了 commons-lang-2.5.jar 文件。
    • 请添加更多关于您的应用架构的信息
    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2012-11-18
    • 2016-08-13
    • 1970-01-01
    • 2018-09-22
    • 2015-10-01
    • 2016-08-31
    • 1970-01-01
    相关资源
    最近更新 更多