1. 程式人生 > >Elasticsearch5.4.3與Spring整合出現的問題

Elasticsearch5.4.3與Spring整合出現的問題

錯誤一:IllegalArgumentException: Could not resolve placeholder 'jdbc.driverClassName' in string value "${...}"

出現這個問題是因為我在配置檔案中使用了多個<context:property-placeholder>

applicationContext.xml中:

    <context:property-placeholder location="classpath:es.properties" />  
    <import resource="applicationContext-es.xml" />  

   <context:property-placeholder location="classpath:jdbc.properties" />    

在使用多個property-placeholder時,正確的寫法是:

  1. <context:property-placeholderlocation="classpath:es.properties"ignore-unresolvable="true"/>
  2. <context:property-placeholderlocation="classpath:jdbc.properties"ignore-unresolvable="true"
    />

詳細參考:https://blog.csdn.net/linwei_1029/article/details/6873764

錯誤二:

java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

錯誤三:

java.lang.ClassNotFoundException: com.fasterxml.jackson.core.filter.TokenFilter 

錯誤二和三其實可以歸類為同一個問題。都是由於jackson版本與es依賴不一致導致的,elasticsearch5.4.3需要jackson版本如下:

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.6</version>
    </dependency> 
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.6</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.8.6</version>
    </dependency>