2017-05-11 4 views
0

J'utilise org.slf4j et ch.qos.logback pour connecter mon application osgi, conçue et exécutée sous eclipse equinox environnement. tout fonctionne bien. Le plugin SLF4J est déclaré une fois, dans un fichier de fonction, comme suit:TYCHO maven build inclut deux versions différentes de org.slf4j.api

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

Quand je lance l'application sous le débogueur Eclipse, ou quand j'exporter l'application sous le produit éclipse fonction d'exportation, mes journaux sont correctement géré en conséquence avec le fichier journalbackback.xml.

Quand je regarde dans le dossier myapp/plugin, je trouve ces 2 pots: - org.slf4j.api_1.7.2.v20121108-1250.jar - org.slf4j.log4j_1.7.2.v20130115-1340.jar

Mais, quand je construis l'application avec TYCHO et Maven, je trouve 2 versions différentes de org.slf4j.api dans le myapp/plugins/dossier:

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

en conséquence, quand j'exécute l'application, le message suivant est affiché:

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. 

Il semble que le fichier org.slf4j.api_1.7.10 soit inclus dans la construction et casse le mécanisme de journalisation.

Cela casse ma construction automatique.

S'il vous plaît aider.

Merci.

EDIT Je n'utilise pas de fichiers cibles. Dans le fichier principal de pom, j'ai mis 2 dépôts:

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

Répondre

0

Le problème racine est que votre produit (je suppose que c'est un produit basé sur les caractéristiques) contient une fonctionnalité qui tire dans org.slf4j.api la version 1.7.2 et une autre caractéristique qui tire dans 1.7.10. (Eh bien, théoriquement, la même fonctionnalité pourrait buller les deux versions, mais c'est rare.)

Si vous utilisez un fichier de définition .target dans votre build Tycho, je commence par identifier comment deux versions de org.slf4j.api se retrouvent dans votre plate-forme cible ouvre le fichier dans le Target Editor, le passage à l'onglet de contenu, et en sélectionnant groupe parLieu. Cela vous indique quel site de mise à jour provient le org.slf4j.api 1.7.10 (mais pas la fonctionnalité exacte). Si vous avez réduit les éléments à une fonctionnalité, vous pouvez essayer de rechercher un remplacement qui ne contient pas l'ensemble org.slf4j.api en cause.

+0

Salut, Merci pour votre réponse, mais je n'utilise pas les fichiers .target, mais les référentiels p2 comme décrit dans ma dernière publication post. – Bepeho

+0

J'ai compris. Votre référentiel 'eclipse' contient' org.slf4j.api' dans les versions 1.7.2 et 1.7.10 (Astuce: pour le vérifier vous-même, vous pouvez aller à la vue * Repository Explorer *, activer * Mode Expert * et rechercher un * osgi.bundle * nommé 'org.slf4j.api'). Selon toute probabilité, sur les fonctionnalités disponibles à partir de ce site est réutilisé par vous dans votre produit et nécessite la version 1.7.10. Quelles sont les caractéristiques de votre produit? (Vous pouvez ouvrir le fichier .'product' dans un éditeur de texte et coller la partie correspondante ici.) –

0

J'ai enfin trouvé où la question était:

dépôts de p2 sont incompatibles. J'ai synchronisé les URL et maintenant tout va bien.

<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: Nous vous remercions de votre aide.