錯誤一: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時,正確的寫法是:
- <context:property-placeholder location="classpath:es.properties" ignore-unresolvable="true" />
- <context:property-placeholder location="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>