Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Modularisation (OSGi, SCA...)
Modularisation (OSGi, SCA...) Forum d'entraide sur les architectures modulaires à base de composants et services (OSGi, SCA...). Avant de poster -> Les cours OSGi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/02/2011, 12h01   #1
identifiant_bidon
Membre habitué
 
Inscription : juillet 2006
Messages : 690
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 690
Points : 132
Points : 132
Par défaut [OSGi] Erreur "Unresolved constraint in bundle"

Bonjour à tous,

Voici mon problème. J'utilise OSGI pour mon projet. Je dispose d'un jar que j'appelle via l'implémentation Felix d'OSGI (via felix.jar qui va me charger mon module principal). Mon souci est que, dans la classe principale (Activator.java) du module appelé par Felix, j'ai besoin de logguer (et donc besoin de log4j)

Je fais donc:

Code :
import org.apache.log4j.Logger;
J'utilise maven pour compiler mon projet et dans mon POM, j'ai ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>1.4.0</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <_donotcopy>(CVS|.svn|config.properties)</_donotcopy>
            <Main-Class>org.mplify.teamtilt.core.Activator</Main-Class>
            <import-Package>!android.*,!dalvik.*,org.osgi.framework,org.osgi.service.packageadmin,org.osgi.service.url,org.osgi.service.startlevel,org.osgi.util.tracker,*, org.apache.log4j</Import-Package>
            <Export-Package>org.mplify.teamtilt.core.service.*</Export-Package>
            <Private-Package>org.mplify.teamtilt.core.*</Private-Package>
            <Embed-Dependency>*;artifactId=org.apache.felix.main;inline=true</Embed-Dependency>
            <Bundle-Activator>org.mplify.teamtilt.core.Activator</Bundle-Activator>
            <Bundle-Vendor>M-PLIFY</Bundle-Vendor>
          </instructions>
        </configuration>
      </plugin>
      <plugin>
	     <artifactId>maven-compiler-plugin</artifactId>
	        <configuration>
	          <source>1.5</source>
	          <target>1.5</target>
	     </configuration>
	  </plugin>
    </plugins>
  </build>
A l'exécution, j'ai ce message :

Code :
ERROR: Bundle org.apache.example.Main [2]: Error starting file:/home/xxxx/Downloads/bundle/Main-1.0.0.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle org.apache.example.Main [2]: Unable to resolve 2.0: missing requirement [2.0] package; (package=org.apache.log4j))
Quelqu'un sait-il me dire a quoi cette erreur est-elle due et comment la résoudre ?

Merci beaucoup.
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 12h50   #2
George7
Membre Expert
 
Avatar de George7
 
Homme
Inscription : août 2006
Messages : 1 234
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2006
Messages : 1 234
Points : 1 602
Points : 1 602
Salut

Tu as bien un bundle qui fournit (export) le package log4j dans ton système ?

EDIT : la distrib officielle de log4j est un bundle OSGi avec les export qui vont bien

De plus cette ligne me fait un peu peur
Code :
1
2
 
<Embed-Dependency>*;artifactId=org.apache.felix.main;inline=true</Embed-Dependency>
As-tu vraiment besoin d'embarquer dans ton bundle des choses propres à Felix ?
__________________
"Ikea / furnishing = OSGi / software : They allow to have very modular things, but trying to put them together generally drives you crazy"
-- Mario Fusco

Pour vos développements Java : apprenez à utiliser la javadoc
George7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 14h28   #3
identifiant_bidon
Membre habitué
 
Inscription : juillet 2006
Messages : 690
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 690
Points : 132
Points : 132
Salut George7

Merci bien pour ta réponse. Elle m'a mise sur la voie (comme d'habitude en fait !! ). Mon jar était foireux. Je l'ai remplacé par le jar qui se trouvait dans le dossier 'plugins' d'Eclipse : org.apache.log4j_1.2.15.v201005080500.jar

Du coup, ça marche nickel.

Pour la ligne dont tu parles, je t'avoue que je n'ai pas vérifié. j'avais repris l'exemple donné sur le site dont on parlait la dernière fois. Je vais l'enlever et voir ce que ça donne.

Merci
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h12.


 
 
 
 
Partenaires

Hébergement Web