Исключение в потоке "main" java.lang.NoSuchMethodError: 'boolean com.google.api.client.http.HttpTransport.isMtls()'

avatar
Lance2k
8 августа 2021 в 18:56
681
1
0

Мне нужна помощь с CalendarQuickstart для Java. Я выполнил шаги быстрого запуска Java, за исключением использования gradle, поскольку мы не будем его использовать.

Когда я запускаю файл, выдается следующая ошибка:

Exception in thread "main" java.lang.NoSuchMethodError: 'boolean com.google.api.client.http.HttpTransport.isMtls()'
at com.google.api.services.calendar.Calendar$Builder.chooseEndpoint(Calendar.java:6974)
at com.google.api.services.calendar.Calendar$Builder.<init>(Calendar.java:7007)
at calendarquickstart.CalendarQuickstart.main(CalendarQuickstart.java:71)
C:\Users\User\AppData\Local\NetBeans\Cache\12.4\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\User\AppData\Local\NetBeans\Cache\12.4\executor-snippets\run.xml:94: Java returned: 1
BUILD FAILED (total time: 2 seconds)

Моя строка 71:

        Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .setApplicationName(APPLICATION_NAME)
            .build();

Этапы быстрого запуска Java и исходный код: ссылка

Импортированные мною библиотеки:

enter image description here

Я использую Netbeans 12.4 и Java JDK 16. На другом ноутбуке программа работает без ошибок. Я также пытался найти ответ в Интернете, они говорили что-то об изменении файла POM.xml, но я нигде не мог его найти. Проект Java был создан с помощью Ant, а не gradle или maven. Надеюсь, эта информация поможет, и спасибо за помощь, так как я несколько часов застрял с этой ошибкой.

Источник

Ответы (1)

avatar
Gaël J
8 августа 2021 в 19:08
1

Вы импортировали много библиотек в разных версиях.

Когда вы делаете это и предполагаете, что разные версии библиотеки определяют одни и те же имена пакетов/классов, будет загружен только один, и нет никакой гарантии, какой именно.

Это часто создает беспорядок, так как, например, метод, добавленный в более позднюю версию библиотеки, будет недоступен, если предыдущая версия была загружена первой.

Итог: удалите дубликаты всех библиотек, сохраните только одну версию каждой библиотеки (вероятно, самую последнюю, но это может зависеть от того, от чего зависит каждая другая библиотека, поэтому, кстати, существует инструмент управления зависимостями. .).

Редактировать: в вашем случае проблема, вероятно, связана с 3 импортированными библиотеками google-http-client.

Lance2k
9 августа 2021 в 10:49
0

хорошо, сейчас попробую. Это просто странно, потому что на другом ноутбуке он работает хорошо.

Lance2k
9 августа 2021 в 10:52
0

Спасибо, все работает, просто немного странно, так как на другом ноутбуке все работает без удаления этих дополнительных библиотек.

Gaël J
9 августа 2021 в 15:47
0

Как я уже сказал, нет никакой гарантии, какая библиотека будет выбрана, и, вероятно, одни и те же библиотеки всегда будут загружаться на одной и той же машине.