newConcurrentHashSet () не может быть разрешен из com.google.guava в IntelliJ? - PullRequest
0 голосов
/ 30 марта 2020

Я компилирую java в IntelliJ (сообщество 2019.2) на MacBook.

Мой код:

 import com.google.common.collect.Sets;

 public static void main(String[] args) {
    Sets.newConcurrentHashSet();// error ! cannot resolve the method !

}

мой пом:

 <dependencies>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>20.0</version>
    </dependency>

</dependencies>

на основе

https://github.com/google/guava/blob/master/guava/src/com/google/common/collect/Sets.java

       Sets.newConcurrentHashSet();

должен быть доступен.

Но почему я не могу это назвать?

ОБНОВЛЕНИЕ Я запустил

 mvn dependency:tree

получил:

 +- com.google.guava:guava:jar:28.1-jre:compile
 [INFO] |  +- com.google.guava:failureaccess:jar:1.0.1:compile
 [INFO] |  +- com.google.guava:listenablefuture:jar:9999.0-empty-to- avoid-conflict-with-guava:compile

Я не вижу других зависимостей, связанных с гуавой.

Когда я проверил:

 ls -lrt ~/.m2/repository/com/google/guava/guava

Я вижу:

28.1-jre
14.0.1
16.0.1
19.0
12.0.1
11.0.2
27.0-jre

Хотя я удалил все другие версии, кроме 28.1- jre, другие версии создаются автоматически всякий раз, когда я компилирую проект или открываю IntelliJ.

Я не знаю, почему это могло произойти.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Скорее всего, у вас дважды есть Guava в вашем пути к классам.

Проверьте свои зависимости с помощью следующей команды maven:

mvn dependency:tree

С помощью этого инструмента найдите, какую зависимость вы включаете, которая содержит более старую , неподдерживаемая версия Guava, и исключить эту версию Guava (ниже, я полагаю, вы обнаружили, что это артефакт abc:xyz:1.2.3, поэтому адаптируйтесь соответственно):

<dependencies>
  <dependency>
    <groupId>abc</groupId><!-- The dependency which depends on the older version of Guava -->
    <artifactId>xyz</artifactId>
    <version>1.2.3</version>
    <!-- Add this below -->
    <exclusions>
      <exclusion>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
      </exclusion>
    </exclusions>
    <!-- Add this above -->
  </dependency>
  <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.1-jre</version><!-- or 28.1-android -->
  </dependency>
</dependencies>
0 голосов
/ 30 марта 2020

Пожалуйста, используйте ниже зависимости.

<dependencies>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>28.1-jre</version>
    </dependency>

</dependencies>

Надеюсь, это будет работать.

...