Сборка TYCHO maven включает две разные версии org.slf4j.api

Я использую org.slf4j и ch.qos.logback для регистрации моего приложения OSGI, разработанного и выполненного в среде затмения равноденствия. все работает хорошо. Плагин SLF4J объявляется один раз в файле функций следующим образом:

<plugin
      id="org.slf4j.api"
      download-size="0"
      install-size="0"
      version="0.0.0"
      unpack="false"/>

Когда я запускаю приложение в отладчике eclipse или когда я экспортирую приложение в функции экспорта продукта eclipse, мои журналы корректно обрабатываются соответственно с logback.xml.

Когда я смотрю в папку myapp/plugin, я нахожу эти 2 банки: - org.slf4j.api_1.7.2.v20121108-1250.jar - org.slf4j.log4j_1.7.2.v20130115-1340.jar

Но когда я собираю приложение с TYCHO и MAVEN, я нахожу 2 разные версии org.slf4j.api в папке myapp/plugins/:

  • org.slf4j.api_1.7.2.v20121108-1250.jar
  • org.slf4j.api_1.7.10.v20160921-1923.jar
  • org.slf4j.log4j_1.7.2.v20130115-1340.jar

в результате, когда я выполняю приложение, отображается следующее сообщение:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
osgi> log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory).
log4j:WARN Please initialize the log4j system properly.

Похоже, файл jar org.slf4j.api_1.7.10 включен в сборку и нарушает механизм ведения журнала.

Это нарушает мою автоматическую сборку.

Пожалуйста помоги.

Благодарю.

РЕДАКТИРОВАТЬ Я не использую целевые файлы. В основном файле pom я установил 2 репозитория:

<repositories>
        <repository>
            <id>eclipse</id>
            <url>http://download.eclipse.org/releases/neon</url>
            <layout>p2</layout>
        </repository>
        <repository>
            <id>orbit</id>
            <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository/</url>
            <layout>p2</layout>
        </repository>

2 ответа

Решение

Я наконец нашел, где проблема была:

Репозитории p2 несовместимы. Я синхронизировал URL-адреса, и теперь все в порядке.

<repositories>
        <repository>
            <id>eclipse</id>
            <url>http://download.eclipse.org/releases/neon</url>
            <layout>p2</layout>
        </repository>
        <repository>
            <id>orbit</id>
            <url>http://download.eclipse.org/tools/orbit/R-builds/R20170307180635/repository/</url>
            <layout>p2</layout>
        </repository>
    </repositories>

@ Андреас: Спасибо за вашу помощь.

Корень проблемы в том, что ваш продукт (я полагаю, что это продукт на основе функций) содержит функцию, которая тянет org.slf4j.api версия 1.7.2 и другая функция, которая тянет в 1.7.10. (Ну, теоретически одна и та же особенность может объединить обе версии, но это редко).

Если вы используете .target файл определения в вашей сборке Tycho, я хорошо сначала определить, как две версии org.slf4j.api в конечном итоге на целевой платформе откройте файл в редакторе целей, переключитесь на вкладку " Содержимое " и выберите " Группировать по местоположению". Это говорит вам, какой сайт обновления org.slf4j.api 1.7.10 происходит (но не точная особенность). Если вы сузили круг до функции, вы можете попробовать найти замену, которая не содержит оскорбительных org.slf4j.api расслоение.

Другие вопросы по тегам