【问题标题】:java.lang.NoClassDefFoundError: org/apache/lucene/codecs/simpletext/SimpleTextCodecjava.lang.NoClassDefFoundError: org/apache/lucene/codecs/simpletext/SimpleTextCodec
【发布时间】:2017-08-19 01:46:10
【问题描述】:

我想在 Elasticsearch 中执行单元测试,因为我正在使用 Java-test-framework
我正在使用Elasticsearch-1.6.0 并参考这些链接寻求帮助 https://www.elastic.co/guide/en/elasticsearch/reference/1.6/using-elasticsearch-test-classes.html https://github.com/elastic/elasticsearch/blob/master/core/src/test/java/org/elasticsearch/action/search/SearchRequestBuilderTests.java

这里是代码

class CampaignESTest extends ESTestCase {

  def getCLient():MockTransportClient={
     val settings = Settings.builder()
                .put(Environment.PATH_HOME_SETTING.getKey(), Files.createTempDir().toString())
                .build();
     val client = new MockTransportClient(settings);  
     client
  }
 }

class CampaignTestSearch extends PlaySpec{
  val client=new CampaignESTest

val response = client.prepareSearch("dbtest")
      .setTypes(CAMPAIGN_COLLECTION_NAME)
      .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
      .addFields("uuid","campaignName","artworkID","activationDate","_source")
      .setQuery(query)
      .execute()
      .actionGet()
  }

我遇到了这个异常

Exception encountered when attempting to run a suite with class name: org.scalatest.DeferredAbortedSuite *** ABORTED ***
[info]   java.lang.NoClassDefFoundError: org/apache/lucene/codecs/simpletext/SimpleTextCodec
[info]   at org.apache.lucene.util.LuceneTestCase.<clinit>(LuceneTestCase.java:616)
[info]   at testcontrollers.campaign.CampaignTestSearch.<init>(CampaignTestSearch.scala:40)
[info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[info]   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[info]   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[info]   at java.lang.Class.newInstance(Class.java:442)
[info]   at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:468)
[info]   at sbt.ForkMain$Run$2.call(ForkMain.java:296)
[info]   at sbt.ForkMain$Run$2.call(ForkMain.java:286)
[info]   ...
[info]   Cause: java.lang.ClassNotFoundException: org.apache.lucene.codecs.simpletext.SimpleTextCodec
[info]   at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[info]   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[info]   at org.apache.lucene.util.LuceneTestCase.<clinit>(LuceneTestCase.java:616)
[info]   at testcontrollers.campaign.CampaignTestSearch.<init>(CampaignTestSearch.scala:40)
[info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[info]   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[info]   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[info]   ...

在这一行得到一个异常

val client=new CampaignESTest

在课堂上CampaignTestSearch

这是build.sbt文件中的依赖项

"org.elasticsearch" % "elasticsearch" % "1.6.0",
                "org.elasticsearch.test" % "framework" % "5.0.0" % "test",
                "org.apache.lucene" % "lucene-test-framework" % "4.10.4" % "test",
                "com.carrotsearch.randomizedtesting" % "randomizedtesting-runner" % "1.6.0" % "test",
                "org.a"org.apache.lucene" % "lucene-expressions" % "4.10.4",
                pache.lucene" % "lucene-backward-codecs" % "5.4.0",

我怀疑异常的原因可能是由于某些版本的依赖项,任何人都可以帮助正确的库依赖项版本以使其正常工作,或者是我缺少的其他东西

【问题讨论】:

    标签: java scala unit-testing elasticsearch lucene


    【解决方案1】:

    两个问题:

    • SimpleTextCodeccodecs 中,而不是向后编解码器。

    • 您正在使用来自 lucene 5.4.0 的 jar。永远不要混搭你的 lucene 版本。 Elasticsearch 1.6.0 旨在与 lucene 4.10.4 一起使用。在 lucene 5.4.0 的罐子中混合只会给您带来问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2018-05-24
    • 2012-11-16
    • 2020-08-31
    • 1970-01-01
    相关资源
    最近更新 更多