elasticsearch,Java,Jakarta Ee,elasticsearch" /> elasticsearch,Java,Jakarta Ee,elasticsearch" />

启动Elasticsearch时加载xerial snappy java失败

启动Elasticsearch时加载xerial snappy java失败,java,jakarta-ee,elasticsearch,Java,Jakarta Ee,elasticsearch,当我开始Elasticsearch时,我遇到了一个异常 java.lang.NoClassDefFoundError: org/xerial/snappy/Snappy at org.elasticsearch.common.compress.snappy.xerial.XerialSnappy.<clinit>(XerialSnappy.java:42) ~[elasticsearch-0.20.6.jar:na] at org.elasticsearch.comm

当我开始Elasticsearch时,我遇到了一个异常

java.lang.NoClassDefFoundError: org/xerial/snappy/Snappy
    at org.elasticsearch.common.compress.snappy.xerial.XerialSnappy.<clinit>(XerialSnappy.java:42) ~[elasticsearch-0.20.6.jar:na]
    at org.elasticsearch.common.compress.CompressorFactory.<clinit>(CompressorFactory.java:58) ~[elasticsearch-0.20.6.jar:na]
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:161) [elasticsearch-0.20.6.jar:na]
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:109) [elasticsearch-0.20.6.jar:na]
    at no.breakpoint.service.search.SearchClientFactory.getClient(SearchClientFactory.java:17) [classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0]
    at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0]
//....
Caused by: java.lang.ClassNotFoundException: org.xerial.snappy.Snappy
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ~[na:1.7.0]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ~[na:1.7.0]
java.lang.NoClassDefFoundError:org/xerial/snappy/snappy
在org.elasticsearch.common.compress.snapy.xerial.XerialSnappy.(XerialSnappy.java:42)~[elasticsearch-0.20.6.jar:na]
在org.elasticsearch.common.compress.CompressorFactory.(CompressorFactory.java:58)~[elasticsearch-0.20.6.jar:na]
在org.elasticsearch.client.transport.TransportClient.(TransportClient.java:161)[elasticsearch-0.20.6.jar:na]
在org.elasticsearch.client.transport.TransportClient.(TransportClient.java:109)[elasticsearch-0.20.6.jar:na]
位于no.breakpoint.service.search.SearchClientFactory.getClient(SearchClientFactory.java:17)[classes/:na]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[na:1.7.0]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)~[na:1.7.0]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:1.7.0]
在java.lang.reflect.Method.invoke(Method.java:601)~[na:1.7.0]
//....
原因:java.lang.ClassNotFoundException:org.xerial.snappy.snappy
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)~[na:1.7.0]
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)~[na:1.7.0]
在java.security.AccessController.doPrivileged(本机方法)~[na:1.7.0]
在java.net.URLClassLoader.findClass(URLClassLoader.java:354)~[na:1.7.0]
在java.lang.ClassLoader.loadClass(ClassLoader.java:423)~[na:1.7.0]
在sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)~[na:1.7.0]
在java.lang.ClassLoader.loadClass(ClassLoader.java:356)~[na:1.7.0]
POM中的依赖项:

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>0.20.6</version>
    </dependency>

org.elasticsearch
弹性搜索
0.20.6
如果我在POM中添加这个依赖项,异常就会消失。但是,原因是什么(或者,我知道这通常意味着在类路径上找不到库,添加依赖项可以修复库,但是Elasticsearch的可传递依赖项是否有问题)


org.xerial.snapy
轻快的java
1.0.4.1

之前遇到过此问题。我能够通过使用1.0.5-M1版本而不是1.0.4.1来解决这个问题


希望有帮助

更详细地说,这是snappy 1.0.4在OSX上使用java 7时的一个已知问题。正如juanpaolo所指出的,您可以通过以下方法解决此问题:

<snappy.version>1.0.5-M1</snappy.version>
1.0.5-M1
然后,在依赖关系中

<dependency>
   <groupId>org.xerial.snappy</groupId>
   <artifactId>snappy-java</artifactId>
   <version>${snappy.version}</version>
</dependency>

org.xerial.snapy
轻快的java
${snappy.version}
<dependency>
   <groupId>org.xerial.snappy</groupId>
   <artifactId>snappy-java</artifactId>
   <version>${snappy.version}</version>
</dependency>