Neo4j“No dependency满足类型org.neo4j.kernel.api.index.SchemaIndexProvider” [英] Neo4j "No dependency satisfies type class org.neo4j.kernel.api.index.SchemaIndexProvider"

查看:704
本文介绍了Neo4j“No dependency满足类型org.neo4j.kernel.api.index.SchemaIndexProvider”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Neo4j社区2.3.3 Linux(Ubuntu 14.04)试图运行一个消费Kafka主题的Java应用程序,在查询Neo4j时处理它的消息并写入它们到另一个Kafka话题。

  hduser @ ubuntu:〜$ java -jar gradle1-0.1.0.jar localhost:9092 musicgrp raw -events enriched-events bad-events /home/ubuntu/GeoLiteCity.dat 
SLF4J:未能加载类org.slf4j.impl.StaticLoggerBinder。
SLF4J:默认为无操作(NOP)记录器实现
SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder。
线程main中的异常java.lang.RuntimeException:启动org.neo4j.kernel.impl.factory.CommunityFacadeFactory时出错,/home/hduser/neo4jdb2/data/graph.db
at org.neo4j .kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:143)
at org.neo4j.kernel.impl.factory.CommunityFacadeFactory.newFacade(CommunityFacadeFactory.java:43)
at org.neo4j .kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:108)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:129)
at org.neo4j.graphdb .factory.GraphDatabaseFactory $ 1.newDatabase(GraphDatabaseFactory.java:117)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185)
at music.StreamApp.main(StreamApp。 java:40)
导致:org.neo4j.kernel.lifecycle.LifecycleException:组件'org.neo4j.kernel.NeoStoreDataSource@1d606256'成功合理地初始化,但未能开始。请参阅附加的原因异常。
at org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:462)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:112)
at org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:452)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:139)
... 6 more
导致:org.neo4j.kernel.impl.util.UnsatisfiedDependencyException:没有依赖关系满足类型org.neo4j.kernel.api.index.SchemaIndexProvider
at org.neo4j .kernel.impl.util.Dependencies.resolveDependency(Dependencies.java:78)
at org.neo4j.kernel.impl.util.Dependencies.resolveDependency(Dependencies.java:74)
at org.neo4j .kernel.NeoStoreDataSource.start(NeoStoreDataS
at org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:452)
... 11 more

这是我的 gradle.build ,我读了一些关于将Neo4j罐子从包中取出的帖子...到它的罐子 - classpath ...我是新来的Gradle,这是相关的吗?



<$ p $应用插件:'java'
apply插件:'application'
sourceCompatibility ='1.8'
mainClassName ='music.StreamApp'
repositories {
mavenCentral()
}
version ='0.1.0'
dependencies {
compile'org.apache.kafka:kafka-clients:0.9.0.0'
compile'c​​om.maxmind.geoip:geoip-api:1.2.14'
compile'c​​om.fasterxml.jackson.core:jackson-databind:2.6.3'
compile'org.slf4j :slf4j-api:1.7.5'
compile'org.neo4j:neo4j:2.3.3'
}
jar {// c
manifest {
attributes 主类':mainClassName
}
from {
configurations.compile.collect {
it.isDirectory()? it:zipTree
$ b $ {
不包括META-INF / *。SF
不包括META-INF / *。DSA
排除META-INF / * .RSA
}
}


解决方案

我怀疑你的jar中没有 META-INF / services / org.neo4j.kernel.extension.KernelExtensionFactory 文件正确。内部Neo4j使用JVM的ServiceLoader来加载它的组件。



参见 https://github.com/neo4j/neo4j/blob/2.3/community/lucene -index / src / main / resources / META-INF / services / org.neo4j.kernel.extension.KernelExtensionFactory



我假设解决此问题的正确方法不是通过更改Gradle的默认jar任务,而是使用正确处理 META-INF 文件的插件。我对影子插件做了一些很好的体验。


Neo4j Community 2.3.3 Linux (Ubuntu 14.04)

Trying to run a Java app which consumes a Kafka topic, process its messages while querying Neo4j, and writes them to another Kafka topic.

hduser@ubuntu:~$ java -jar gradle1-0.1.0.jar localhost:9092 musicgrp raw-events enriched-events bad-events /home/ubuntu/GeoLiteCity.dat
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.RuntimeException: Error starting org.neo4j.kernel.impl.factory.CommunityFacadeFactory, /home/hduser/neo4jdb2/data/graph.db
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:143)
    at org.neo4j.kernel.impl.factory.CommunityFacadeFactory.newFacade(CommunityFacadeFactory.java:43)
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:108)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:129)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:117)
    at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185)
    at music.StreamApp.main(StreamApp.java:40)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@1d606256' was successfully initialized, but failed to start. Please see attached cause exception.
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:462)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
    at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:112)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:139)
    ... 6 more
Caused by: org.neo4j.kernel.impl.util.UnsatisfiedDependencyException: No dependency satisfies type class org.neo4j.kernel.api.index.SchemaIndexProvider
    at org.neo4j.kernel.impl.util.Dependencies.resolveDependency(Dependencies.java:78)
    at org.neo4j.kernel.impl.util.Dependencies.resolveDependency(Dependencies.java:74)
    at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:507)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452)
    ... 11 more

This is my gradle.build, I read some post about keeping Neo4j jars out of the bundle ... by pointing to its jars with --classpath ... I'm new to Gradle, is this relevant ?

apply plugin: 'java'
apply plugin: 'application'
sourceCompatibility = '1.8' 
mainClassName = 'music.StreamApp'
repositories {
    mavenCentral()
}
version = '0.1.0'
dependencies { 
    compile 'org.apache.kafka:kafka-clients:0.9.0.0'
    compile 'com.maxmind.geoip:geoip-api:1.2.14'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.6.3'
    compile 'org.slf4j:slf4j-api:1.7.5'
    compile 'org.neo4j:neo4j:2.3.3'
}
jar { // c
manifest {
    attributes 'Main-Class': mainClassName
}
from {
    configurations.compile.collect {
        it.isDirectory() ? it : zipTree(it)
    }
} {
    exclude "META-INF/*.SF"
    exclude "META-INF/*.DSA"
    exclude "META-INF/*.RSA"
}
}

解决方案

My suspicion is that you don't have the META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory files in your jar correctly. Internally Neo4j uses JVM's ServiceLoader to load its components.

See https://github.com/neo4j/neo4j/blob/2.3/community/lucene-index/src/main/resources/META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory for the potentially missing piece.

I assume the right way to solve this is not by changing Gradle's default jar task, instead use a plugin that handles META-INF files correctly. I've made some good experiences with the shadow plugin.

这篇关于Neo4j“No dependency满足类型org.neo4j.kernel.api.index.SchemaIndexProvider”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆