java - ServiceConfigurationError:无法实例化SPI类:org.apache.lucene.codecs.compressing.FastCompressingCodec

标签 java elasticsearch lucene

我正在尝试通过使用Elasticsearch 7.7.1扩展ESSingleNodeTestCase来运行测试。但是我收到以下错误。我没有看到任何jar hell错误,并且已经按照here进行了intellij设置

java.util.ServiceConfigurationError: Cannot instantiate SPI class: org.apache.lucene.codecs.compressing.FastCompressingCodec

    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:82)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:51)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:38)
    at org.apache.lucene.codecs.Codec$Holder.<clinit>(Codec.java:47)
    at org.apache.lucene.codecs.Codec.getDefault(Codec.java:143)
    at org.apache.lucene.util.TestRuleSetupAndRestoreClassEnv.before(TestRuleSetupAndRestoreClassEnv.java:142)
    at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:44)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
    at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
    at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
    at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
    at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
    at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: blockSize must be in 2-22, got 1024
    at org.apache.lucene.codecs.compressing.CompressingStoredFieldsFormat.<init>(CompressingStoredFieldsFormat.java:114)
    at org.apache.lucene.codecs.compressing.CompressingCodec.<init>(CompressingCodec.java:96)
    at org.apache.lucene.codecs.compressing.FastCompressingCodec.<init>(FastCompressingCodec.java:24)
    at org.apache.lucene.codecs.compressing.FastCompressingCodec.<init>(FastCompressingCodec.java:31)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:72)
    ... 20 more
然后
REPRODUCE WITH: ./gradlew 'null' --tests "com.vnera.query.runner.MyTest" -Dtests.seed=5351B8690E63EDD8 -Dtests.locale=en-IN -Dtests.timezone=Asia/Kolkata
NOTE: Mac OS X 10.15.6 x86_64/Azul Systems, Inc. 1.8.0_242 (64-bit)/cpus=8,threads=1,free=237421568,total=324534272

java.lang.NullPointerException
    at java.util.Objects.requireNonNull(Objects.java:203)
    at org.apache.lucene.codecs.Codec.setDefault(Codec.java:154)
    at org.apache.lucene.util.TestRuleSetupAndRestoreClassEnv.after(TestRuleSetupAndRestoreClassEnv.java:279)
    at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:51)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
    at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
    at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
    at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
    at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
    at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
    at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
    at java.lang.Thread.run(Thread.java:748)
有人可以让我知道是什么原因造成的吗?如何解决这个问题?

最佳答案

问题是因为我使用了不同版本的elasticsearch-test框架和elasticsearch

<dependency>
       <groupId>org.elasticsearch.test</groupId>
       <artifactId>framework</artifactId>
       <version>7.6.0</version>
       <scope>test</scope>
</dependency>

<dependency>
       <groupId>org.elasticsearch</groupId>
       <artifactId>elasticsearch</artifactId>
       <version>7.7.1</version>
</dependency>
通过将org.elasticsearch.test:framework也设置为7.7.1,可以解决此问题

关于java - ServiceConfigurationError:无法实例化SPI类:org.apache.lucene.codecs.compressing.FastCompressingCodec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63010356/

相关文章:

java - 为什么不建议在 JSP 中使用 JavaScript?

java - 每次我使用“重玩”按钮时,我的井字游戏应用程序都会崩溃

java - Neo4j Server 无法启动嵌入式数据库

c# - 索引、IndexMany、IndexAsnyc、IndexManyAsync 与 NEST

lucene - Elasticsearch/Lucene亮点

elasticsearch - Lucene任何字母正则表达式

java - Java应用程序无法连接到MySQL数据库

elasticsearch - Elasticsearch-将别名从OLD_INDEX指向NEW_INDEX

amazon-web-services - 在AWS上托管Elasticsearch:{“error” :“You need to sign in or sign up before continuing.”}

java - 在 Lucene 中使用 WikipediaTokenizer 的示例