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 18/04/2011, 10h14   #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 "NoClassDefFoundError :com.sun.xml.internal.ws.api.message.Header"

Bonjour à tous,

J'utilise OSGI pour me créer des bundles. Je fais les build de mes différents projets en utilisant maven. Un des projets que je veux utiliser contient des appels a des webservices.

J'utilise l'implémentation felix d'OSGI et lorsque je lance Felix pour démarrer mes bundle, j'ai l'erreur suivante :

java.jang.NoClassDefFoundError : com.sun.xml.internal.ws.api.message.Header not found by com.client.monBundle

Quelqu'un aurait-il une idée sur la façon de régler le problème ?? Peut-être une ressource à ajouter dans mon POM ?
Merci beaucoup

Edit : si je fais un import com.sun.xml.internal.ws.api.message.Header;
je n'ai pas d'erreur de compile. Par contre, lorsque je fais un mvn install, j'ai l'erreur suivante :
package com.sun.xml.internal.ws.api.message does not exist

ce qui tend vers un souci au niveau du PÖM. Mais quoi mettre ??
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 10h33   #2
Nemek
Modérateur
 
Avatar de Nemek
 
Homme Logan
Développeur Java
Inscription : août 2005
Messages : 1 689
Détails du profil
Informations personnelles :
Nom : Homme Logan
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2005
Messages : 1 689
Points : 3 589
Points : 3 589
Tu ne dois pas utiliser ce qui commence par com.sun et encore moins ce qui contient "internal" dans le nom du package.

Vérifies si tu utilises le même JDK dans les deux cas.
Nemek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 10h53   #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 Nemek

oui c'est le même JDK (c'est le dernier)

En fait, j'avais fait un

Code :
import com.sun.xml.internal.ws.api.message.Header;
pour le test (puisque c'est sur ce package que j'ai mon erreur NoClassDefFoundError) lorsque je lance mon bundle.

La complétion marche bien et Eclipse me propose bien ce package dans la classe principale du bundle.
Par contre, si je fais mvn install, j'ai un Build failure - package com.sun.xml.internal.ws.api.message does not exist
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 11h20   #4
Nemek
Modérateur
 
Avatar de Nemek
 
Homme Logan
Développeur Java
Inscription : août 2005
Messages : 1 689
Détails du profil
Informations personnelles :
Nom : Homme Logan
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2005
Messages : 1 689
Points : 3 589
Points : 3 589
Le package officiel est normalement "com.sun.xml.ws.api.message" (sans "internal").

Pour utiliser cette classe il te faut l'implémentation de référence JAX-WS. Elle est fournie avec un conteneur d'application J2EE 5.

L'artefact Maven est "jaxws-rt" (ça devrait être un dépendance runtime !)
Nemek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 11h27   #5
identifiant_bidon
Membre habitué
 
Inscription : juillet 2006
Messages : 690
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 690
Points : 132
Points : 132
Ok Nemek merci

Pour être également plus précis sur la façon de résoudre ce problème et parce que ça peut servir à d'autres, j'ai résolu mon problème en ajoutant dans le fichier config.properties (fichier propre à Felix) la ligne suivante :

Code :
org.osgi.framework.bootdelegation=com.sun.xml.internal.ws.api.message
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 12h01   #6
George7
Membre Expert
 
Avatar de George7
 
Homme
Inscription : août 2006
Messages : 1 234
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2006
Messages : 1 234
Points : 1 602
Points : 1 602
Citation:
Envoyé par identifiant_bidon Voir le message
Ok Nemek merci

Pour être également plus précis sur la façon de résoudre ce problème et parce que ça peut servir à d'autres, j'ai résolu mon problème en ajoutant dans le fichier config.properties (fichier propre à Felix) la ligne suivante :

Code :
org.osgi.framework.bootdelegation=com.sun.xml.internal.ws.api.message
Hmmmm moi je ferais pas ça personnellement...
J'aurais un bundle avec la lib, qui exporte ses packages publics, et ton bundle import le package. Mais modifier cette propriété peut être dangereux…
__________________
"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 18/04/2011, 13h22   #7
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

Zut, moi qui croyais avoir trouvé un super truc !!
Ton idée n'est pas mauvaise, je vais m'y pencher ...

Par contre, c'est quoi cette propriété ? et comment faire un bundle avec une lib ?
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 00h57   #8
George7
Membre Expert
 
Avatar de George7
 
Homme
Inscription : août 2006
Messages : 1 234
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2006
Messages : 1 234
Points : 1 602
Points : 1 602
Déjà regarde si il n'existe pas une version bundle de la lib. Si non, c'est plutôt simple, tu crées un Manifest "qui-va-bien", c'est-à-dire qui exporte les packages publics de la lib, donne un nom au bundle, et le tour est joué.
La propriété dont je parlais et celle que tu as utilisée. Je n'ai jusqu'ici jamais eu besoin de l'utiliser, et ça peut faire des résultats surprenants par la suite, car le classloader délègue automatiquement lors de la résolution des imports pour les packages mentionnés.
__________________
"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 19/04/2011, 09h25   #9
Nemek
Modérateur
 
Avatar de Nemek
 
Homme Logan
Développeur Java
Inscription : août 2005
Messages : 1 689
Détails du profil
Informations personnelles :
Nom : Homme Logan
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2005
Messages : 1 689
Points : 3 589
Points : 3 589
Eclipse fait très bien ce genre de boulot sinon il existe l'outil bnd.
Nemek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 15h09   #10
George7
Membre Expert
 
Avatar de George7
 
Homme
Inscription : août 2006
Messages : 1 234
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2006
Messages : 1 234
Points : 1 602
Points : 1 602
Citation:
Envoyé par Nemek Voir le message
Eclipse fait très bien ce genre de boulot sinon il existe l'outil bnd.
Ouais c'est sûr, mais bon même à la main c'est pas la mort et comme je le dis aussi, il existe souvent des versions déja avec un manifest pour OSGi
__________________
"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 19/04/2011, 15h17   #11
Nemek
Modérateur
 
Avatar de Nemek
 
Homme Logan
Développeur Java
Inscription : août 2005
Messages : 1 689
Détails du profil
Informations personnelles :
Nom : Homme Logan
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2005
Messages : 1 689
Points : 3 589
Points : 3 589
Ouais mais franchement écrire un MANIFEST correct à la main c'est vraiment chiant faut pas que ca dépasse 70 caractères par ligne sinon faut ajouter un retour chariot et des espaces, en plus ce genre de librairie possède un nombre incalculable de package si tu t'amuses à tout les exporter t'as pas finis les copier/coller.

Par contre il doit sûrement exister une version bundle du jar vu qu'il s'agit d'une implémentation standard.
Nemek 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 15h24.


 
 
 
 
Partenaires

Hébergement Web