0

私は grails で neo4j エンタープライズ 1.8 を実行しており、1.8.1 にアップグレードしたいと考えていました。私も Cypher Engine を広範囲に使用しているので、アップグレード後にいくつかのクエリを実行しようとしました。残念ながら、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)

ここで何がうまくいかないのか、これを回避する解決策はありますか?

ベスト・マイケル

4

3 に答える 3

1

おそらく、古いバージョンの lib に対して Neo4j の暗号モジュールを再構築するか、neo4j から依存関係を実際に除外することもできます。

于 2013-02-21T10:02:43.947 に答える
0

ここでの問題は次のとおりです。

  • Neo4j 1.8.1 は、concurrentlinkedhashmap_lru バージョン 1.3.1 への新しい依存関係を導入し、かつ
  • Grails は、concurrentlinkedhashmap_lru バージョン 1.2_jdk5 に依存しており、かつ
  • concurrentlinkedhashmap_lru の API は、これら 2 つのバージョンに対して下位互換性がありません。

そのため、依存関係を 1.3.1 に移動するために、 grailsコードベースが最近アップグレードされました。コア/コミット/6dfab1a5db4da8c176351f23d65c7fc0d4aa6364 .

そのため、Grails で Neo4j 1.8.1 (およびそれ以降) を使用するには、新しい Grails のリリースを待つか、自分で Grails スナップショットを作成することができます。

于 2013-02-21T07:01:08.087 に答える
0

私は同じ問題を抱えていました-1.8.1では、concurrentlinkedhashmap-lru.1.3.1.jarを個別に含める必要がありました

http://code.google.com/p/concurrentlinkedhashmap/downloads/detail?name=concurrentlinkedhashmap-lru-1.3.1.jar&can=2&q=

于 2013-02-20T16:13:11.587 に答える