TYCHO maven build包含两个不同的org.slf4j.api版本

时间:2017-05-11 07:40:37

标签: eclipse logback slf4j tycho slf4j-api

我正在使用org.slf4j和ch.qos.logback来记录我的osgi应用程序,它是在eclipse equinox环境下设计和执行的。 一切顺利。 SLF4J插件在功能文件中声明一次,如下所示:

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

当我在eclipse调试器下运行应用程序时,或者在eclipse产品导出功能下导出应用程序时,我的日志会通过logback.xml正确处理。

当我查看myapp / plugin文件夹时,我发现这两个罐子:   - org.slf4j.api_1.7.2.v20121108-1250.jar   - org.slf4j.log4j_1.7.2.v20130115-1340.jar

但是,当我使用TYCHO和MAVEN构建应用程序时,我在myapp / plugins /文件夹中找到了2个不同版本的org.slf4j.api:

  • 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.

看起来org.slf4j.api_1.7.10 jar包含在构建中并破坏了日志记录机制。

这会破坏我的自动构建。

请帮忙。

感谢。

修改 我没有使用目标文件。 在主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 个答案:

答案 0 :(得分:0)

根本问题在于您的产品(我认为它是基于功能的产品)包含一个功能,它引入org.slf4j.api版本1.7.2和另一个引入1.7.10的功能。 (好吧,从理论上讲,同样的功能可以兼用两个版本,但这种情况很少见。)

如果您在Tycho构建中使用.target定义文件,我很好地确定了目标平台中两个版本的org.slf4j.api如何打开中的文件目标编辑器,切换到内容选项卡,然后选择分组 位置。这告诉您org.slf4j.api 1.7.10来自哪个更新站点(但不是确切的功能)。如果您已将某些内容缩小到某个功能,则可以尝试搜索不包含违规org.slf4j.api捆绑包的替换内容。

答案 1 :(得分:0)

我终于找到了问题所在:

p2存储库不兼容。 我已经同步了网址,现在还可以。

<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>

@Andreas:谢谢你的帮助。