【开发心得】记一次springboot2.x集成spring data elasticsearch java.lang.NoSuchFieldError: LATEST的报错
前言: 最近新模块需要引入新版es,在自己建立的单独的boot工程里边,正常集成,正常处理业务。但是搬到父工程里,发现报错。
奇怪了,之前的群组工程并没有使用es或者solr啊,为啥启动不起来呢。
1.一个小儿科的问题,包路径多了一层, 导致bean注入失败。
2.工程里边包含lucene。。。。(前辈之前做测试的时候加的)
3.还有一个问题是,如果是父子工程的情况下,手动指定elastic search版本,需要在父工程的properties中指名版本号。
报错:java.lang.NoSuchFieldError: LATEST
通过查看报错处Environment对象源码,发现有如下变量声明。
public static final org.apache.lucene.util.Version DEFAULT_LUCENE_MATCH_VERSION = org.apache.lucene.util.Version.LATEST;
显然该变量又引用了lucene-core-version.jar下的工具类Version中的变量值。
解决方案:
去掉lucene以来即可。