leadtools.RasterException: собственная библиотека Ltkrnx.dll уже загружена в другой загрузчик классов - PullRequest
0 голосов
/ 15 мая 2019

Я столкнулся с проблемой:

Собственная библиотека Ltkrnx.dll уже загружена в другой загрузчик классов

во время повторного развертывания приложения (сервер tomcat 8).

Я также добавил проверку, но она мне не помогает.

private void loadLibrary(LTLibrary library) {
    if (!Platform.isLibraryLoaded(library)) {
        Platform.loadLibrary(library);
    }
}

Вызывается: leadtools.RasterException: Собственная библиотека C: \ LEADTOOLS 20 \ Bin \ CDLL \ x64 \ Ltkrnx.dll уже загружена в другой загрузчик классов

1 Ответ

0 голосов
/ 17 мая 2019

Вы используете LEADTOOLS в 2 разных веб-приложениях?Если да, следующий ответ может помочь вам решить проблему: java.lang.UnsatisfiedLinkError: Собственная библиотека XXX.so уже загружена в другой загрузчик классов

Поскольку этот вопрос касается OpenCV, а не LEADTOOLSЯ процитирую соответствующие части здесь (очень немного отредактировано):

Теперь есть ограничение, что нативная библиотека может быть загружена только в один загрузчик классов.Веб-приложения используют собственный загрузчик классов, поэтому, если одно веб-приложение загрузило собственную библиотеку, другое веб-приложение не может сделать то же самое.Поэтому загрузка кода собственных библиотек не может быть помещена в каталог веб-приложения, а должна быть помещена в общий каталог контейнера (Tomcat).Когда у вас есть класс, написанный с помощью обычного шаблона выше (loadLibrary в статическом инициализаторе использования класса), достаточно поместить jar, содержащий класс, в общий каталог.Однако при вызове loadLibrary в коде веб-приложения нативная библиотека все равно будет загружена в «неправильный» загрузчик классов, и вы получите UnsatisfiedLinkError.

Чтобы заставить «правильный» загрузчик классов загрузитьВ нативной библиотеке вы можете создать крошечный класс с помощью одного статического метода, выполняющего только loadLibrary.Поместите этот класс в дополнительный jar и поместите этот jar в общий каталог Tomcat.Затем в веб-приложениях замените вызов System.loadLibrary на вызов вашего нового статического метода.Таким образом загрузчики классов для нативной библиотеки .. будут совпадать, и нативные методы можно будет инициализировать.

Если ваша ситуация отличается или предложение вам не помогает, отправьте следующую информациюto support@leadtools.com и наша служба поддержки будет работать с вами, чтобы изолировать проблему:

  1. Подробности этого вопроса (исключение, которое вы получаете, версия 20 LEADTOOLS, 64-битная, Tomcat8)
  2. Серийный номер вашего продукта LEADTOOLS (не размещайте его здесь!).Если вы по-прежнему проводите оценку и у вас нет серийного номера, просто укажите это.
  3. Что вы пытались решить до сих пор, и какие результаты дали вам (например, ответ, упомянутый выше).
  4. Прочие сведения о вашей ОС, IDE или среде программирования в целом.
...