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

Eclipse Java Discussion :

SPI et Eclipse


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Bonjour,

    Je suis utilisateur de SPI (cf. http://www.javaworld.com/javaworld/j...-1103-mp3.html) dans le cadre d'un projet. Or, si les SPI fonctionnent bien lorsque je mets mon programme dans un jar et l'exécute, ils ne fonctionnent pas quand je lance le programme depuis Eclipse.

    Afin que les SPI soient pris en compte, il est nécessaire de les déclarer dans des fichiers dans le sous dossier services de META-INF de notre jar. J'ai bien l'impression que Eclipse n'utilise pas ces fichiers quand il lance le programme, ce qui rend les SPI inopérants car non déclarés.

    Je vois deux solutions pour m'en tirer, or je n'arrive à mettre en place aucun des deux :
    1/ Dire à Eclipse de prendre en compte les SPI.
    2/ Dire à Eclipse de générer le jar directement et de lancer celui-ci.

    Pour l'instant, je suis obligé d'exporter le jar, puis de l'exécuter. Je perds pas mal de temps pour rien j'ai l'impression.

    Explications :
    Prenons l'exemple de javax.sound.sampled.spi.AudioFileReader et du SPI de javazoom pour lire les mp3 : javazoom.spi.mpeg.sampled.file.MpegAudioFileReader

    On déclare donc ce dernier via un fichier dans META-INF/services afin de le déclarer comme étant un implémentation du service AudioFileReader, pour le format MP3 (qui n'est pas géré de base par la JVM).

    Si ensuite on utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AudioFileFormat ff = AudioSystem.getAudioFileFormat(new File("monfichier.mp3"));
    Si on pack l'application dans un jar, tout se passe bien, notre implémentation du support du MP3 est prise en compte par la JVM, tout se passe bien. Si on lance le programme depuis eclipse, on se mange un UnsupportedAudioFileException dans les dents car, bien que javazoom.spi.mpeg.sampled.file.MpegAudioFileReader soit bien dans le classpath, sa déclaration en tant que SPI n'est aps prise en compte.

    Si je met le tout dans un jar, et que je lance à la main, ça fonctionne. Il faut donc ou bien que Eclipse prenne en compte mes déclaration de SPI, ou bien qu'il me fasse le jar direct avant de lancer l'appli. Or pas moyen de lui faire faire l'un ou l'autre.

    Des suggestions ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Bonjour,

    Je pense qu'il faut paramétrer correctement ta configuration de lancement, comme cela est un peu expliqué ici http://eclipse.developpez.com/faq/?p...#argumentsJVM2 et notamment vérifier qu'il y a tout ce qu'il faut dans l'onglet Classpath.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    J'ai un fouillé de ce coté, mais rien trouvé de bien convainquant. C'est quand même incroyable qu'il n'y ai pas de moyen simple de faire ça. Et que personne ne semble avoir eu le problème sur net . . .

  4. #4
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Citation Envoyé par deadalnix Voir le message
    J'ai un fouillé de ce coté, mais rien trouvé de bien convainquant. C'est quand même incroyable qu'il n'y ai pas de moyen simple de faire ça. Et que personne ne semble avoir eu le problème sur net . . .
    Hé hé, en général quand on en arrive à penser ça, on se rend compte après que c'est simplement parce qu'on n'a pas abordé la chose dans le bon sens

    Donc, peux-tu donner la structure des éléments que tu as dans ton jar ? Histoire de voir quels sont les fichiers importants qu'il faudrait référencer dans la configuration de lancement d'Eclipse.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Bon, j'en suis venu à faire un script qui met les fichiers au bon endroit au bon moment.

    Je crois que le problème est simplement que les SPI sont un fonction très (trop?) peu utilisées et donc simplement mal intégrés. C'est un peu décevant, mais ça fonctionne. Il suffit simplement de copier les fichiers de définition des SPI au bon endroit car eclipse les mets bien dans le jar, mais pas dans le /bin du projet. En les y incluant, de la même manière que si l'on avait décompressé le jar, cela fonctionne.

    J'en ai profité pour ajouter d'autres fonctions dans le script comme signer le jar.

    Le soucis viens des fichiers qui définissent quelles sont les classes d'implémentation de service qui ne sont pas pris en compte. En les copiant avec les classes via un script, cela fonctionne.

    Je laisse le thread en non résolu, dans la mesure ou ce n'est pas éclipse qui résout le problème. Et peut-être quelqu'un va un jour le déterrer pour nous annoncer de grandes nouvelles à ce sujet.

    Toujours est-il que j'ai un solution satisfaisante.

  6. #6
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Ma foi... D'après ce que tu dis, et selon ce que je pense avoir compris de ton contexte, je ne vois rien d'insolutionnable en configurant correctement ton projet. Certes, ce n'est pas sans doute pas trivial
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

Discussions similaires

  1. Comment lancer Eclipse en incluant ses plugins
    Par eclie dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 19/02/2009, 08h45
  2. Eclipse en français
    Par Super Castor dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 02/06/2007, 15h59
  3. Recherche un framework RAD pour Eclipse
    Par Almex dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 08/10/2003, 12h24
  4. Eclipse Mac version et pluginUML
    Par Driden dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/06/2003, 19h03
  5. Servlet dans Eclipse ?
    Par unflag dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2003, 18h46

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