Его очень странный случай, кажется, является повреждением файла .class. Наше приложение зависит от зависимости, предоставляемой другой командой. Имеются 2 java-файла: FTGService
и FTGServiceLight implements FTGService
.Метод отмечен как абстрактный, но не показан javap
Так что, когда я javap -p FTGService
печатает:
....
public abstract java.util.List<munshi.transfers.domain.TransferredFile> getArchivedFilesByLastSyncTime(java.util.Date, java.util.Date, java.util.Date, java.util.Date, java.util.Date, java.util.List<java.lang.String>, java.util.List<java.lang.Integer>);
Сделав javap -p FTGServiceLight
, он печатает:
....
public java.util.List<munshi.transfers.domain.TransferredFile> getArchivedFilesByLastSyncTime(java.util.Date, java.util.Date, java.util.Date, java.util.Date, java.util.Date, java.util.List<java.lang.String>, java.util.List<java.lang.Integer>);
....
Когда я javap -v FTGServiceLight
, соответствующая информация может быть найдена here.
Но работает он выдает ошибку:
java.lang.AbstractMethodError: munshi.transfers.service.light.FTGServiceLight.getArchivedFilesByLastSyncTime(Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/List;Ljava/util/List;)Ljava/util/List; at broker.services.resolver.impl.FileSyncServiceImpl.fetchFiles(FileSyncServiceImpl.java:71) at broker.services.resolver.impl.TransferFileSync.run(TransferFileSync.java:71) at sun.reflect.GeneratedMethodAccessor129.invoke(Unknown Source) at
getArchivedFilesByLastSyncTime
идет помеченный как abstract
по какой-то причине. Кроме того, когда я его отладки, это то, что он показывает, как делать:
FTGServiceLight.getMethod("getArchivedFilesByLastSyncTime",Date.class,Date.class,Date.class,Date.class,Date.class, List.class, List.class))
Примечание modifiers
показан как 1025
и делать Modifiers.isAbstract(1025)
возвращается true
. Таким образом, метод getArchivedFilesByLastSyncTime
при отладке показан как abstract
, но javap
предлагает другое. Но когда я декомпилирую FTGServiceLight
, он действительно показывает метод body, поэтому кажется, что он переопределен.
Что может быть причиной такого поведения
PS: Я проверил дерево МВН зависимостей, и альтернативный вариант для этого класса никогда не приходит в картине.
Возможно, у вас несколько версий класса, лежащего вокруг, и один Javap видит, отличается от того, на который смотрит JVM. – Antimony
Как упоминалось в почтовом скрипте. Существует только одна зависимость. – Jatin