Базовые классы Java все еще в пути к классам во время сборки Android Maven
==========================================================================

У меня довольно странная проблема, вызванная тем фактом, что реализация Java для Android отличается от реализации Sun Java и что базовые Java-классы по-прежнему включены в classpath (полностью в конце) во время сборки maven Android-проект. Я думаю, что решение состоит в том, чтобы не иметь классов Java на пути к классам, но я, кажется, не могу найти способ сделать это.

В сущности, в java.util.concurrent есть класс AbstractExecutorService (как в Android, так и в Java). Класс java содержит пару методов, называемых newTaskFor, которые я хотел бы использовать в android, но у реализации android их нет. Нет проблем, я просто реализую их (с некоторыми изменениями, такими как использование Future вместо RunnableFuture). Это хорошо работает в муравье (инструмент сборки, от которого мы мигрируем).

Проблема в том, что когда maven пытается скомпилировать мой класс (который расширяет AbstractExecutorService), вместо того, чтобы просто добавлять мои методы в реализацию Android, когда он не находит их, он продолжает путь по классам, находит методы java и жалуется, что возвращаемый результат типы не совпадают. В идеале я не думаю, что java-классы должны быть доступны даже во время сборки Android, поскольку все, что они могут сделать, это заставить вас думать, что вы можете запускать методы, которые вы действительно не можете, но в настоящее время вы можете запускать все виды java-методов, не доступно в Android, и он будет компилироваться нормально (в Maven).

У кого-нибудь есть какие-либо предложения или решения для этого? Кто-нибудь сталкивался с чем-то подобным?
  
  
  
  

**Edit: here is the relevant part of the pom (omitted repositories and such):**

  
  

  
  

**Edit2: Here is the compilation error I am getting.**

Примечание: ExecutionService - это класс, который расширяет AbstractExecutorService. Тем не менее, я хочу, чтобы он расширял только версию для Android, а не базовую версию Java. Я даже пытался вставить методы-заглушки newTaskFor в Android-версию AbstractExecutorService (полагая, что компилятор должен тогда предположить, что я переопределяю эти методы, а не базовые java - хотя я должен отметить, что @Override в код), но он все еще не работает.

Никто не просил их, но вот мои объявления методов:

Моя текущая теория заключается в том, что это как-то связано с типами шаблонов, но я не совсем уверен, как это доказать или исправить.

**Edit 6/30:** Я должен также отметить, что этоnot новый код Ему более года, и с тех пор он прекрасно компилируется с использованием ant. Это было частью многочисленных стабильных релизов. Сейчас мы находимся в процессе миграции нашего процесса сборки на maven, и поэтому я пытаюсь настроить этот пакет для правильной сборки.

Проблема заключается в том, что Maven автоматически размещает Oracle JDK на пути к классам, и что Jar-файл Android предоставляет альтернативные варианты реализации, и они иногда отличаются. На данном этапе я не знаю, можно ли сказать плагину Maven Compiler удалить JDK из его пути к классам и просто использовать зависимости от пути к классам. Это имхо решит проблему.

Пожалуйста, создайте проблему в трекере проблем плагинов Android Maven и, возможно, исследуйте ее, задав вопрос о пользователе Maven или о списке разработчиков.