java - Elasticsearch :found jar hell in test classpath

标签 java scala elasticsearch elasticsearch-1.6.0

我想在 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.ExceptionInInitializerError:
[info]   at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:138)
[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.RuntimeException: found jar hell in test classpath
[info]   at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:90)
[info]   at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:138)
[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]   ...
[info]   Cause: java.nio.file.NoSuchFileException: /home/testproject/target/web/classes/test
[info]   at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
[info]   at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
[info]   at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
[info]   at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
[info]   at sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:144)
[info]   at sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
[info]   at java.nio.file.Files.readAttributes(Files.java:1737)
[info]   at java.nio.file.FileTreeWalker.getAttributes(FileTreeWalker.java:219)
[info]   at java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:276)
[info]   at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:322)

在这一行得到一个异常

val client=new CampaignESTest

在类 CampaignTestSearch

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

libraryDependencies ++= Seq(filters, 
                "org.scalatest" %% "scalatest" % "2.2.6" % "test"withSources() withJavadoc(),
                "org.scalatestplus" %% "play" % "1.4.0-M3" % "test",
                "com.esotericsoftware.kryo" % "kryo" % "2.10",
                "org.mongodb" %% "casbah" % "2.8.0",
                "org.slf4j" % "slf4j-api" % "1.6.4",
                "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.apache.lucene" % "lucene-codecs" % "4.10.4" % "test",
                "org.apache.logging.log4j" % "log4j-core" % "2.8.2",
                "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.8.2" ,
                "org.apache.logging.log4j" % "log4j-api" % "2.8.2",
                "com.typesafe.akka" %% "akka-actor" % "2.3.6",
                "com.typesafe.akka" % "akka-testkit_2.11" % "2.3.6",
                "ch.qos.logback" % "logback-core" % "1.0.9",
                "com.github.nscala-time" %% "nscala-time" % "2.0.0",
                "com.hazelcast" % "hazelcast" % "3.5",
                "com.hazelcast" % "hazelcast-client" % "3.5",
                "com.twitter" % "chill-bijection_2.11" % "0.7.0",
                "com.github.slugify" % "slugify" % "2.1.3" ,
                "org.mindrot" % "jbcrypt" % "0.3m",
                "org.codehaus.groovy" % "groovy-all" % "2.4.0",
                "org.apache.lucene" % "lucene-expressions" % "4.10.4",
                "com.restfb" % "restfb" % "1.19.0",
                "org.twitter4j" % "twitter4j-core" % "4.0.0",
                "org.scribe" % "scribe" % "1.3.5",
                "com.google.code.gson" % "gson" % "2.6.2",
                "com.google.oauth-client" % "google-oauth-client" % "1.20.0",
                "com.google.api.client" % "google-api-client-auth-oauth2" % "1.2.0-alpha",
                "com.google.api-client" % "google-api-client" % "1.20.0",
                "com.google.http-client" % "google-http-client-jackson" % "1.20.0",
                "com.google.apis" % "google-api-services-oauth2" % "v2-rev120-1.20.0",
                "com.google.oauth-client" % "google-oauth-client-appengine" % "1.20.0",
                "com.google.oauth-client" % "google-oauth-client-java6" % "1.20.0",
                "com.google.oauth-client" % "google-oauth-client-jetty" % "1.20.0",
                "com.google.oauth-client" % "google-oauth-client-servlet" % "1.20.0",
                "com.google.apis" % "google-api-services-calendar" % "v3-rev120-1.19.1",
                "com.google.inject" % "guice" % "3.0",
                "org.mockito" % "mockito-all" % "1.10.19")

如何解决这些异常?我也尝试过这里给出的解决方案 Java Jar hell Runtime Exception 当我尝试在 org/elasticsearch/bootstarp 包中创建一个类 JarHell 时,它不会让我创建它说类型已经存在我也尝试搜索该类但确实没找到,请指导

最佳答案

正如@Val 所观察到的,ES v5 的测试框架不适用于 ES v1。

为什么不升级到更新版本的 ES?

我记得,旧的 v1 存在一些严重的安全漏洞。加上 ES 5 有更好的性能等等。

您可以做的另一件事是通过使用像 Jest 这样的 http 库将测试与确切的 ES 版本分离。或 ESJC .

关于java - Elasticsearch :found jar hell in test classpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770719/

相关文章:

没有文档的 ElasticSearch 分面结果

java - 如何使所有工具提示在 Java 中半透明?

java - Java中SimpleDateFormat解析方法遇到问题

scala - 在 SBT 中过滤来自非托管源的包

java - 为elasticsearch客户端构建XContentBuilder json查询

elasticsearch - Logstash 5.1.1 kafka 输入不获取关于主题的现有消息

java - 使用 StringBuilder 输入源?

java - 在处理程序上调用时, TextView 为空

http - Play Framework - 如何重定向到插件 Controller 生成的页面? [安全社交]

scala - 覆盖 Scala 枚举中的 toString 方法