Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Membre habitué
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 139
    Points
    139

    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
    Modérateur
    Avatar de Nemek
    Homme Profil pro Logan
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Nom : Homme Logan
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 064
    Points : 4 216
    Points
    4 216

    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.

  3. #3
    Membre habitué
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 139
    Points
    139

    Par défaut

    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

  4. #4
    Modérateur
    Avatar de Nemek
    Homme Profil pro Logan
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Nom : Homme Logan
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 064
    Points : 4 216
    Points
    4 216

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

  5. #5
    Membre habitué
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 139
    Points
    139

    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 :
    org.osgi.framework.bootdelegation=com.sun.xml.internal.ws.api.message

  6. #6
    Membre Expert
    Avatar de George7
    Homme Profil pro
    Inscrit en
    août 2006
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

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

  7. #7
    Membre habitué
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 139
    Points
    139

    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
    Membre Expert
    Avatar de George7
    Homme Profil pro
    Inscrit en
    août 2006
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

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

  9. #9
    Modérateur
    Avatar de Nemek
    Homme Profil pro Logan
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Nom : Homme Logan
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 064
    Points : 4 216
    Points
    4 216

    Par défaut

    Eclipse fait très bien ce genre de boulot sinon il existe l'outil bnd.

  10. #10
    Membre Expert
    Avatar de George7
    Homme Profil pro
    Inscrit en
    août 2006
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

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

  11. #11
    Modérateur
    Avatar de Nemek
    Homme Profil pro Logan
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Nom : Homme Logan
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 064
    Points : 4 216
    Points
    4 216

    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.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •