2017-08-18 1 views
0

ich für das Unit-Tests in Elasticsearch ausführen möchte ich Java-test-framework
verwende ich bin mit Elasticsearch-1.6.0 und unter Bezugnahme auf diesen Link, um Hilfe 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.javajava.lang.NoClassDefFoundError: org/Apache/Lucene/Codecs/Simple/SimpleTextCodec

hier ist der Code

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() 
    } 

ich erhalte diese Ausnahme

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] ... 

auf dieser Linie eine Ausnahme immer

val client=new CampaignESTest 

in Klasse CampaignTestSearch

hier ist die Abhängigkeiten in build.sbt Datei

"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", 

ich die Ursache der Ausnahme vermuten, vielleicht wegen Einige Versionen der Abhängigkeiten können jeder bitte mit der korrekten Bibliotheksabhängigkeitsversion helfen, um es zu machen zu arbeiten oder ist tehre etwas anderes, das ich

bin fehlt

Antwort

1

zwei Probleme:

  • SimpleTextCodec ist in codecs, nicht rückwärts-Codecs.

  • Sie verwenden ein Glas von Lucene 5.4.0. Mischen Sie niemals Ihre Lucene-Versionen. Elasticsearch 1.6.0 wurde entwickelt, um mit Lucene 4.10.4 zu arbeiten. Mischen in einem Glas von Lucene 5.4.0 kann nur Probleme für Sie verursachen.

+0

diese Ausnahme Dank wurde behoben, aber ich bin eine andere Ausnahme bekommen https://stackoverflow.com/questions/45768480/java-lang-noclassdeffounderror-org-apache-logging-log4j-logger – swaheed

Verwandte Themen