Проблема с использованием внешнего jar-файла в общей библиотеке Jenkins - PullRequest
0 голосов
/ 23 октября 2018

Мы используем общую библиотеку Jenkins для централизации некоторого кода для всех наших (скриптовых) конвейеров.Теперь мы включили код Groovy в библиотеку .jar (написанную на Kotlin, скомпилированную для совместимости с Java 8).Мы опубликовали эту библиотеку в нашем собственном репозитории maven и теперь хотим использовать ее в нашем Общедоступном Либарии.

Мы используем @Grab для загрузки нашей библиотеки, и до этого момента она работает как шарм.Однако мы получаем NoSuchMethodError.Мы немного определили это, мы используем OkHttp в нашей библиотеке Kotlin.OkHttp внутренне использует Okio.Когда мы вызываем методы, которые внутренне вызывают OkHttp-Code из нашего конвейера, все в порядке.Однако, когда OkHttp-Code вызывает Okio изнутри, мы получаем NoSuchMethodError.

. Мы уже проверили опубликованный файл .jar, он содержит классы с методами, которые, по-видимому, отсутствуют.У кого-нибудь есть идея, в чем может быть проблема?

Пока мы занимаемся этим, мы не можем получить доступ к переменным среды, установленным для Jenkins, в нашей библиотеке Kotlin, есть ли способ, как мы можем это исправить?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Мы поняли это.Проблема заключалась в том, что плагин Jenkins использовал более старую версию okio для внутреннего использования.Поскольку плагины и разделяемые библиотеки каким-то образом совместно используют один и тот же путь к классам, okio не был загружен, а версия из плагина использовалась, поэтому класс отсутствовал.

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

0 голосов
/ 23 октября 2018

Просматривая здесь зависимости, у вас есть несколько проблем:

  1. OKHttp - похоже, что некоторые библиотеки Android
  2. okio - зависит от времени выполнения Kotlin

Любые обращения к ним приведут к ошибкам метода не найдены, если вы не найдете способ сделать их доступными, не вызывая проблем в Jenkins

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...