Neo4j OGM库驱动程序配置

时间:2016-04-19 20:04:43

标签: android neo4j

我正在尝试在我的Android应用程序中使用Neo4j OGM库2.0.1。

这是我的builde.gradle文件:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'org.neo4j:neo4j-ogm-core:2.0.1'
    compile 'org.neo4j:neo4j-ogm-http-driver:2.0.1'
}

然后在我的主要活动中的onCreate()方法中:

Configuration configuration = Components.configuration();
        configuration.driverConfiguration()
                .setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver")
                .setURI("http://socialphonebook:a24mWoNT0EapsI2CT679@socialphonebook.sb09.stations.graphenedb.com:24789/db/data/");
SessionFactory sessionFactory = new SessionFactory("it.lucaspuerari.entities");
sessionFactory.openSession();

我收到了这个错误:

E: FATAL EXCEPTION: main
   java.lang.NoSuchMethodError: No static method encodeBase64String([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar)
       at org.neo4j.ogm.authentication.UsernamePasswordCredentials.<init>(UsernamePasswordCredentials.java:28)
       at org.neo4j.ogm.config.DriverConfiguration.setCredentials(DriverConfiguration.java:72)
       at org.neo4j.ogm.config.DriverConfiguration.setURI(DriverConfiguration.java:58)

2 个答案:

答案 0 :(得分:1)

您的问题是您正在尝试在Android上使用OGM,但OGM背后的团队从未在Android环境中尝试过,而Android也不是目标平台。您可能知道Android Java与Oracle Java不同。

如果您想在Android上使用OGM,我建议您分叉OGM并尝试再次构建和运行Android Java。

您的问题是缺少encodeBase64String方法,因为Android的库已经过时,您应该使用android.util.Base64代替org.apache.commons.codec.binary.Base64

答案 1 :(得分:0)

问题是由于Android附带了org.apache.commons的旧版本。从版本1.4开始,支持这种方法。我遇到了同样的问题,我解决了在org.apache.commons中重新打包新版android.org.apache.commons并更改UsernamePasswordCredentials类中的对应导入的问题。