【问题标题】:Cannot migrate my java code to Elasticsearch 2.4 (Java API)无法将我的 java 代码迁移到 Elasticsearch 2.4 (Java API)
【发布时间】:2017-02-20 12:13:49
【问题描述】:

我最近在我的 Java 代码中迁移到了 Elasticsearch 2.4。我在我的 gradle 文件中使用以下外部库:

'spring-data-mongodb': 'org.springframework.data:spring-data-mongodb:1.6.0.RELEASE',
'spring-data-rest': 'org.springframework.data:spring-data-rest-webmvc:2.2.0.RELEASE',
'spring-webmvc': 'org.springframework:spring-webmvc:4.0.7.RELEASE',
'elasticsearch-client': 'org.elasticsearch:elasticsearch:2.4.0',
'spring-context': 'org.springframework:spring-context:4.0.7.RELEASE',
'jackson': 'com.fasterxml.jackson.core:jackson-databind:2.8.1',
'commons-io': 'commons-io:commons-io:2.4',
'commons-codec': 'commons-codec:commons-codec:1.8',
'commons-httpclient': 'org.apache.httpcomponents:httpclient:4.3.6',
'commons-lang': 'org.apache.commons:commons-lang3:3.3.2',
'commons-collections': 'org.apache.commons:commons-collections4:4.0',
'commons-cli': 'commons-cli:commons-cli:1.3',
'commons-csv': 'org.apache.commons:commons-csv:1.1',
'joda-time': 'joda-time:joda-time:2.3',
'spring-reactor': 'org.projectreactor.spring:reactor-spring-context:1.1.3.RELEASE',
'json-smart': 'net.minidev:json-smart:1.3.1',
'mongeez': 'org.mongeez:mongeez:0.9.3',
'mongo-driver': 'org.mongodb:mongo-java-driver:2.12.3',
'akka-actor': 'com.typesafe.akka:akka-actor_2.10:2.3.13',
'scala-library': 'org.scala-lang:scala-library:2.10.4

我正在使用 mockmvc 来测试我的项目。该错误发生在 MockMvc.java 类中,如下所示:

无法实例化 bean 类:

[org.springframework.hateoas.hal.Jackson2HalModule$HalLinkListDeserializer]: Constructor threw exception

com.fasterxml.jackson.databind.deser.std.ContainerDeserializerBase: method (Ljava/lang/Class;)V not found

我认为这是与杰克逊依赖相关的问题,但我不确定。

【问题讨论】:

  • 为什么你认为这个问题与杰克逊依赖有关?
  • @RomanC 因为他的错误是一些编译的代码正在调用 Jackson 方法,该方法在他给定的依赖集中不存在。这意味着该方法的调用者很可能出现了错误的 Jackson。

标签: java spring spring-mvc elasticsearch jackson


【解决方案1】:

是的,这听起来确实像是其中一个 Spring 模块被编译(并期望与之一起使用)的 Jackson 版本与 2.8 之间的不兼容。 可能有必要尝试更新版本的 Spring (MVC?)。

请注意,由于各种错误修复,您还需要使用 Jackson 2.8.3 而不是 2.8.1,尽管对于这个特定问题可能无关紧要。

【讨论】:

  • 感谢@StaxMan 此问题已修复,在 C:\elasticsearch-2.4.1\modules\lang-groovy 上的 plugin-security.policy 文件位置添加了以下配置:权限 org.elasticsearch.script。 ClassPermission "java.lang.";权限 org.elasticsearch.script.ClassPermission "java.text.";
【解决方案2】:

感谢@StaxMan,此问题已通过在C:\elasticsearch-2.4.1\modules\lang-groovy 上的 plugin-security.policy 文件位置添加以下配置得到解决:

permission org.elasticsearch.script.ClassPermission "java.lang.*";
permission org.elasticsearch.script.ClassPermission "java.text.*"; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 2013-05-08
    • 2012-10-17
    • 1970-01-01
    • 2010-10-18
    • 2020-11-22
    • 2015-11-16
    • 2021-02-24
    相关资源
    最近更新 更多