我正在尝试在我的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)
答案 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
类中的对应导入的问题。