我之前能够运行我的应用程序但是从今天开始我尝试了一些实验时,它突然出现了jar地狱错误。我不知道这个例外是什么,现在我的项目不再适用了。这是错误原因:
44 [main] DEBUG org.elasticsearch.bootstrap - examining jar: /usr/local/apache-tomcat-7.0.62/lib/annotations-api.jar
55 [main] DEBUG org.elasticsearch.bootstrap - examining jar: /usr/local/apache-tomcat-7.0.62/lib/catalina-ant.jar
57 [main] DEBUG org.elasticsearch.bootstrap - examining jar: /usr/local/apache-tomcat-7.0.62/lib/catalina-ha.jar
59 [main] DEBUG org.elasticsearch.bootstrap - examining jar: /usr/local/apache-tomcat-7.0.62/lib/catalina-tribes.jar
62 [main] DEBUG org.elasticsearch.bootstrap - examining jar: /usr/local/apache-tomcat-7.0.62/lib/catalina.jar
Exception in thread "main" java.lang.IllegalStateException: failed to load bundle [] due to jar hell
at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:338)
at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:109)
at org.elasticsearch.node.Node.<init>(Node.java:146)
at org.elasticsearch.node.Node.<init>(Node.java:128)
at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:145)
at com.elastic.Main.main(Main.java:38)
Caused by: java.lang.IllegalStateException: jar hell!
class: org.apache.catalina.util.Base64
jar1: /usr/local/apache-tomcat-7.0.62/lib/catalina-ant.jar
jar2: /usr/local/apache-tomcat-7.0.62/lib/catalina.jar
at org.elasticsearch.bootstrap.JarHell.checkClass(JarHell.java:280)
at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:186)
at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:336)
... 5 more
为什么罐子会发生?我以前在开发人员生活中从未见过这个,而且我的应用程序在今天之前是可行的。我错过了实施弹性搜索的重要内容吗?这是我的代码段。
Settings.Builder settings = Settings.settingsBuilder();
settings.put("path.home", Paths.get("").toAbsolutePath().toString() + File.separator + "resource" + File.separator + "elasticsearch-2.1.2");
settings.put("cluster.name","mySearch");
Node node = NodeBuilder.nodeBuilder().settings(settings).build().start();
Client client = node.client();
欢迎任何帮助或线索,非常感谢
编辑1:
我没有使用VM参数来确定ES主路径,因为我需要在转移项目时将项目带入不同的路径和平台。
编辑2:
我尝试在VM参数中使用弹性主路径更改我的项目也将不再起作用,因为我确实遵循了此link提到的解决方案,但错误仍然存在。
答案 0 :(得分:1)
尝试使用:
-Dtests.jarhell.check=false
备注:它适用于我的Elasticsearch 2.4。我看到了评论,它并非在所有Elasticsearch版本中都可用(请参阅Elasticsearch jar hell when writing integration tests)
答案 1 :(得分:0)
我收到了与 catalina.jar 冲突的 catalina-ant.jar 相同的错误消息。因此,快速解决方法是将catalina-ant.jar重命名为 $ TOMCAT / lib 文件夹中的catalina-ant.jar.orig。
Tomcat仍在为我竞争,即使缺少一个库。