Grails neo4j enterprise 1.8.1密码执行引擎错误?

Grails neo4j enterprise 1.8.1密码执行引擎错误?,grails,neo4j,Grails,Neo4j,我在grails上运行neo4j enterprise 1.8,并希望升级到1.8.1。由于我也在广泛使用Cypher引擎,升级后我尝试执行一些查询。不幸的是,我在尝试启动Cypher ExecutionEngine时遇到了一个异常 我已经编写了一个小型服务,为我完成了这项工作: import org.neo4j.cypher.javacompat.ExecutionEngine import org.neo4j.kernel.impl.util.StringLogger class Cyph

我在grails上运行neo4j enterprise 1.8,并希望升级到1.8.1。由于我也在广泛使用Cypher引擎,升级后我尝试执行一些查询。不幸的是,我在尝试启动Cypher ExecutionEngine时遇到了一个异常

我已经编写了一个小型服务,为我完成了这项工作:

import org.neo4j.cypher.javacompat.ExecutionEngine
import org.neo4j.kernel.impl.util.StringLogger

class CypherService {

    def graphDatabaseService

    static transactional = true

    def executeString(String cypherString) {
        log.debug "start method executeString"

        ExecutionEngine executionEngine = new ExecutionEngine(graphDatabaseService, StringLogger.DEV_NULL)
        if(executionEngine) {
            def result = executionEngine.execute(cypherString)
            return result
        } else {
            log.error "Could not initialize the execution engine for Cypher"
            return null
        }
    }
}
启动执行引擎时,我遇到以下异常:

java.lang.NoSuchMethodError: com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap$Builder.maximumWeightedCapacity(J)Lcom/googlecode/concurrentlinkedhashmap/ConcurrentLinkedHashMap$Builder;
at org.neo4j.cypher.internal.LRUCache.<init>(LRUCache.scala:31)
at org.neo4j.cypher.ExecutionEngine$$anon$1.<init>(ExecutionEngine.scala:91)
at org.neo4j.cypher.ExecutionEngine.<init>(ExecutionEngine.scala:91)
at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:54)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:202)
at com.netjay.fanorakel.CypherService.executeString(CypherService.groovy:16)
java.lang.NoSuchMethodError:com.googlecode.concurrentlinkedhashmap.concurrentlinkedhashmap$Builder.maximumWeightedCapacity(J)Lcom/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap$Builder;
位于org.neo4j.cypher.internal.LRUCache(LRUCache.scala:31)
位于org.neo4j.cypher.ExecutionEngine$$anon$1。(ExecutionEngine.scala:91)
位于org.neo4j.cypher.ExecutionEngine(ExecutionEngine.scala:91)
位于org.neo4j.cypher.javacompat.ExecutionEngine(ExecutionEngine.java:54)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
位于org.codehaus.groovy.runtime.callsite.ConstructorSite$constructorsiteNounewrapnocerce.callConstructor(ConstructorSite.java:102)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:52)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:202)
位于com.netjay.fanorakel.CypherService.executeString(CypherService.groovy:16)
你知道这里出了什么问题吗?有没有办法避免这个问题

最好的
Michael

我也有同样的问题-对于1.8.1,我需要单独包括concurrentlinkedhashmap-lru.1.3.1.jar


这里的问题是:

  • Neo4j 1.8.1为ConcurrentLinkedHashMapLRU版本1.3.1引入了一个新的依赖项,并且
  • Grails依赖于concurrentlinkedhashmap_lru版本1.2_jdk5,以及
  • concurrentlinkedhashmap_lru的API不向后兼容这两个版本
因此,最近升级了grails代码库,将依赖关系移动到1.3.1,请参见和


因此,要在Grails中使用Neo4j 1.8.1(及更新版本),您可以等待新的Grails发行版,或者自己构建Grails snaptshot。

您也可以根据旧版本的库重新构建Neo4j的cypher模块,或者实际上从Neo4j中排除依赖项。

您使用的是Maven吗?这似乎是一个依赖项解决问题。检查这些库的所有版本是否一致。grails使用的concurrentlinkedhashmap-lru.1.0JDK5.jar和neo4j 1.8.1使用的concurrentlinkedhashmap-lru.1.3.1.jar之间似乎存在版本冲突。因此,我尝试将新库添加到类路径中,但neo4j似乎接受了旧库。我不知道grails包含该jar的旧版本。对不起,我不知道该怎么办