2017-09-28 51 views
1

我試圖使用Java連接到Elasticsearch。這裏是我的代碼的一部分:Elasticsearch Java API錯誤:java.lang.NoSuchMethodError:com.carrotsearch.hppc.ObjectHashSet.equals(Ljava/lang/Object; Ljava/lang/Object;)Z

private static TransportClient client = null; 
    public BooleanQuery() { 
     try { 
      client = new PreBuiltTransportClient(Settings.EMPTY); 

      client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 

     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } 
    } 

當我運行這個程序,我收到以下異常:

Exception in thread "main" java.lang.NoSuchMethodError: com.carrotsearch.hppc.ObjectHashSet.equals(Ljava/lang/Object;Ljava/lang/Object;)Z 
    at com.carrotsearch.hppc.ObjectHashSet.add(ObjectHashSet.java:159) 
    at com.carrotsearch.hppc.ObjectHashSet.addAll(ObjectHashSet.java:189) 
    at com.carrotsearch.hppc.ObjectHashSet.from(ObjectHashSet.java:544) 
    at org.elasticsearch.index.mapper.MapperService.<clinit>(MapperService.java:101) 
    at org.elasticsearch.common.settings.IndexScopedSettings.<clinit>(IndexScopedSettings.java:60) 
    at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:69) 
    at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:138) 
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:265) 
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:130) 
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:116) 
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:106) 
    at com.accenture.poc.elasticsearch.BooleanQuery.<init>(BooleanQuery.java:29) 
    at com.accenture.poc.DataProcessor.main(DataProcessor.java:134) 

這裏是我的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.accenture</groupId> 
    <artifactId>poc</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>poc</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>19.0</version> 
     </dependency> 
     <dependency> 
      <groupId>info.debatty</groupId> 
      <artifactId>java-string-similarity</artifactId> 
      <version>RELEASE</version> 
     </dependency> 

     <!-- Dependencies of Wiki --> 
       <!-- https://mvnrepository.com/artifact/org.fusesource.jdbm/jdbm --> 
     <dependency> 
      <groupId>org.fusesource.jdbm</groupId> 
      <artifactId>jdbm</artifactId> 
      <version>2.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.bluestemsoftware.open.maven.tparty</groupId> 
      <artifactId>xerces-impl</artifactId> 
      <version>2.9.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.ant</groupId> 
      <artifactId>ant-compress</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.7</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.marmotta</groupId> 
      <artifactId>marmotta-loader-hbase</artifactId> 
      <version>3.3.0</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.5</version> 
     </dependency> 
    <!-- Elasticsearch dependency --> 
     <dependency> 
      <groupId>org.elasticsearch.client</groupId> 
      <artifactId>transport</artifactId> 
      <version>5.6.2</version> 
      </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.9.1</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> 
     <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.9.1</version> 
     </dependency> 
    </dependencies> 

</project> 

的錯誤指向「client = new PreBuiltTransportClient(Settings.EMPTY)」行。我不確定它是什麼意思?我沒有發現與此相關的任何內容。任何幫助表示讚賞。

+1

您可以發佈您的pom.xml嗎? – pleft

+0

@pleft我添加了我的pom.xml。它有其他依賴關係相關的其他方法我的eclipse項目 – Rose

回答

1

運行一個mvn dependency:tree -Dverbose顯示有com.carrotsearch:hppc:jar(0.4.2,0.7.1)的兩個版本。後者隨附了elasticsearch依賴關係。第一個來自org.apache.marmotta:marmotta-loader-hbase:jar

所以我懷疑你的版本中有兩個版本hppc.jar,因爲當你添加彈性搜索依賴時,你並沒有執行清理(mvn clean)。

因此,嘗試再次清潔構建項目,然後再試一次:

mvn clean package

+0

當我做mvn乾淨包,我得到編譯錯誤,如:[錯誤]編譯錯誤: [信息] ------------ ------------------------------------------------- [錯誤]錯誤讀取C:\ Users \ njaiswal \ .m2 \ repository \ org \ apache \ ant \ ant \ 1.10.1 \ ant-1.10.1.jar;無效的LOC標頭(壞簽名) – Rose

+0

這意味着螞蟻罐已損壞。從m2 repo中刪除ant文件夾,然後讓maven再次下載它。 – pleft