IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OGSi Java Discussion :

[OSGi] Erreur "NoClassDefFoundError :com.sun.xml.internal.ws.api.message.Header"


Sujet :

OGSi Java

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    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 ??

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    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.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Salut Nemek

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

    En fait, j'avais fait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    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 !)
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    org.osgi.framework.bootdelegation=com.sun.xml.internal.ws.api.message

  6. #6
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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…

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    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 ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    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.

  9. #9
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Eclipse fait très bien ce genre de boulot sinon il existe l'outil bnd.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  10. #10
    Invité
    Invité(e)
    Par défaut
    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

  11. #11
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    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.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JAXB] namespace et prefixe : PropertyException: name: com.sun.xml.internal.bind.namespacePrefixMapper
    Par OrigineDeLaVie dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/08/2013, 11h40
  2. Réponses: 5
    Dernier message: 16/04/2010, 10h14
  3. Réponses: 1
    Dernier message: 02/04/2010, 12h34
  4. Réponses: 0
    Dernier message: 15/10/2009, 17h58
  5. [JAXP] com.sun.xml.parser.ValidatingParser
    Par yolepro dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 05/11/2008, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo