Почему Maven не компилирует код таблицы Guava, когда это делает компилятор Eclipse?(предполагаемый тип не соответствует верхней границе (ам)) - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь скомпилировать следующий код с Maven:

  final Table<Integer, Integer, Integer> destination = HashBasedTable.create();
  final Map<Integer, Integer> source = new HashMap<>();

  // compiles
  final Table<Integer, Integer, Integer> broker =
           source.entrySet().stream().collect( Tables.toTable( e -> 0, e -> 0, e -> 0,
                    ( e1, e2 ) -> 0, HashBasedTable::create ) );
  destination.putAll( broker );

  // doesn't compile
  destination.putAll( source.entrySet().stream().collect( Tables.toTable( e -> 0, e -> 0,
           e -> 0, ( e1, e2 ) -> 0, HashBasedTable::create ) ) );

В результате возникает ошибка:

incompatible types: inferred type does not conform to upper bound(s)
inferred: com.google.common.collect.Table<java.lang.Object,java.lang.Object,java.lang.Object>
upper bound(s): com.google.common.collect.Table<java.lang.Object,java.lang.Object,java.lang.Object>,com.google.common.collect.Table<? extends java.lang.Integer,? extends java.lang.Integer,? extends java.lang.Integer>,java.lang.Object

Зачем мне нужна эта таблица брокера для компиляции?Самое интересное, что каким-то образом компилятор Eclipse знает, как с этим справиться.

Я использую плагин компилятора Maven версии 3.8.0 с тегами target и source установлен на 1.8.

Мне кажется, что здесь что-то не так в рабочем процессе - я занимаюсь разработкой в ​​IDE, все выглядит хорошо, и неожиданно оказывается, что с моим кодом что-то не таки он даже не компилируется в сборке Maven.

Я пробовал новейшую версию 3.6 Maven, и компилятор Eclipse поставляется с Eclipse 2018-12, как Java 8, так и 11.

1 Ответ

0 голосов
/ 13 июля 2019

Я заполнил ошибку, связанную с этим, и похоже, что она продолжается: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8219318.

...