我使用的是Elasticsearch 1.1.1,java客户端和服务器版本是一样的。单元测试都运行良好。当我启动tomcat服务器时,它有:
java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/FilterConfig"在这个错误发生之前,有很多这样的错误:
2014-05-02 15:07:03,954 DEBUG o.e.plugins [localhost-startStop-1] [Corsair] [D:\eclipse-indigo\plugins\org.python.pydev.jython_2.7.0.2012080220\_site] directory does not exist.很多东西,还有不同的文件夹
如果删除使用elasticsearch的代码并将依赖项保留在pom.xml中,服务器就可以正常启动。WEB-INF/lib和我的应用程序的类路径没有servlet-api.jar,只有TOMCAT_HOME/lib
我设置es客户端的部分如下:
if (this.client == null) {
this.client = new TransportClient(ImmutableSettings.settingsBuilder().
put("cluster.name", this.cluster).build());
final String[] addresses = this.hosts.split(",");
for (final String address : addresses) {
final String trimmed = address.trim();
final String[] tuple = trimmed.split(":");
this.client.addTransportAddress(
new InetSocketTransportAddress(tuple[0].trim(), Integer.valueOf(tuple[1].trim())));
}
}单元测试使用相同的代码,并通过所有测试。
任何指针都很受欢迎。
这似乎是相关的,但还没有得到一个适当的解决方案。
Linkage error when using Elasticsearch client in Spring WebApp
FYI,我还使用Spring和Spring 4.2.5。version,Tomcat版本7.0.40
更新:
多亏了这个链接http://lexxweb.co.uk/blog/?p=66,原来它是eclipse插件之一,它加载了另一个版本servlet,导致了我一直得到的LinkageError。
发布于 2014-05-03 02:45:05
多亏了这个链接http://lexxweb.co.uk/blog/?p=66,原来它是eclipse插件之一,它加载了另一个版本servlet,导致了我一直得到的LinkageError。删除插件后,现在一切都好了。
https://stackoverflow.com/questions/23422804
复制相似问题