Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不带ServiceLoader的Neo4J_Java_Osgi_Neo4j_Serviceloader - Fatal编程技术网

Java 不带ServiceLoader的Neo4J

Java 不带ServiceLoader的Neo4J,java,osgi,neo4j,serviceloader,Java,Osgi,Neo4j,Serviceloader,我一直在使用Neo4J 1.8.x作为应用程序框架中的嵌入式数据库,打破了Neo4J使用的常规ServiceLoader。到目前为止,我已经通过使用解决了这个问题。这非常有效 但是,这些OSGi指令不再适用于1.9.0、1.9.1或2.0.0-M03。初始化嵌入式数据库时,出现以下异常: java.lang.ExceptionInInitializerError at plugins.fritter.Fritter.setupNeo4j(Fritter.java:240) at plugins.

我一直在使用
Neo4J 1.8.x
作为应用程序框架中的嵌入式数据库,打破了
Neo4J
使用的常规
ServiceLoader
。到目前为止,我已经通过使用解决了这个问题。这非常有效

但是,这些
OSGi
指令不再适用于
1.9.0
1.9.1
2.0.0-M03
。初始化嵌入式数据库时,出现以下异常:

java.lang.ExceptionInInitializerError
at plugins.fritter.Fritter.setupNeo4j(Fritter.java:240)
at plugins.fritter.Fritter.runPlugin(Fritter.java:106)
at freenet.pluginmanager.PluginHandler.startPlugin(PluginHandler.java:45)
at freenet.pluginmanager.PluginManager.realStartPlugin(PluginManager.java:394)
at freenet.pluginmanager.PluginManager.startPluginFile(PluginManager.java:367)
at freenet.clients.http.PproxyToadlet$3.run(PproxyToadlet.java:157)
at freenet.support.PooledExecutor$MyThread.innerRun(PooledExecutor.java:247)
at freenet.support.PooledExecutor$MyThread.realRun(PooledExecutor.java:187)
at freenet.support.io.NativeThread.run(NativeThread.java:129)

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at org.neo4j.graphdb.factory.GraphDatabaseSettings.<clinit>(GraphDatabaseSettings.java:79)
... 9 more
java.lang.ExceptionInInitializeError
位于plugins.friter.friter.setupNeo4j(friter.java:240)
位于plugins.friter.friter.runPlugin(friter.java:106)
位于freenet.pluginmanager.PluginHandler.startPlugin(PluginHandler.java:45)
位于freenet.pluginmanager.pluginmanager.realStartPlugin(pluginmanager.java:394)
位于freenet.pluginmanager.pluginmanager.startPluginFile(pluginmanager.java:367)
在freenet.clients.http.PproxyToadlet$3.run(PproxyToadlet.java:157)
在freenet.support.PooledExecutor$MyThread.innerRun(PooledExecutor.java:247)
在freenet.support.PooledExecutor$MyThread.realRun(PooledExecutor.java:187)
位于freenet.support.io.NativeThread.run(NativeThread.java:129)
原因:java.lang.ArrayIndexOutOfBoundsException:0
位于org.neo4j.graphdb.factory.GraphDatabaseSettings。(GraphDatabaseSettings.java:79)
... 9更多
我知道
OSGi
设置说明已从
1.9.0
及更高版本更改,但新的初始化方法没有解决此问题


neo4j
1.8.3
non-ServiceLoader
/
OSGi
上下文中是否仍受支持?如果是,正确的设置方法是什么?

在neo4j 1.9及以上版本中,服务加载代码发生了很大的变化:您无法加载缓存:尽管我不知道为什么。没错,它确实发生了变化。您链接到的相关代码似乎仍然依赖于功能性ServiceLoader,因此在我的插件环境中会中断?我猜是的。你试过META-INF/services目录吗?看起来,只要服务目录有序,就可以用标准方式引导neo4j,因为neo4j将使用ServiceLoader,ServiceLoader将查看META-INF/services/文件夹。编辑:哦!不确定您是否真的在使用OSGI,或者您的框架是否破坏了ServiceLoader。在后一种情况下,最好的办法可能是自己修补neo4j(这就是为什么我给了您源代码链接=)。