Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/05/2011, à 14:45

Dr Le Rouge

[Résolu] Problème Java : "factory already defined"

Bonjour bonjour,

Je dois développer une application en Java dans le cadre d'un stage. Jusque là tout va bien, mais j'aimerais inclure dans mon programme un autre programme au format jar (en l'occurrence, celui-là) : c'est là que ça se gâte... En effet, pour cela, je fais appelle à la fonction main du jar en question avec les bons arguments : JarRsrcLoader.main(bidules). Lors du premier appel, tout marche nickel. Lorsque mon programme parcourt de nouveau la boucle dans laquelle cet appel se situe, je reçois un superbe :

Exception in thread "main" java.lang.Error: factory already defined
at java.net.URL.setURLStreamHandlerFactory(URL.java:1096)
at "la ligne où je fais appel à JarRsrcLoader.main()"

J'ai évidemment fait des recherches sur google, mais je n'ai rien trouvé de probant... Je ne débute pas en programmation, mais je débute en Java (mon problème y est peut-être lié ^^).

Toute aide ou nouvelle piste de recherche sera appréciée à sa juste valeur big_smile

Merci d'avance camarades !

Dernière modification par Dr Le Rouge (Le 25/05/2011, à 16:32)


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#2 Le 25/05/2011, à 15:07

trapangle

Re : [Résolu] Problème Java : "factory already defined"

http://download.oracle.com/javase/6/doc … erFactory) :
This method can be called at most once in a given Java Virtual Machine

On ne peut appeler qu'une fois la méthode setURLStreamHandlerFactory pour un même objet URL. Une fois que c'est fait, il ne faut plus le refaire. Ou alors céer un nouvel objet URL.


Mathematics is not a crime

Hors ligne

#3 Le 25/05/2011, à 16:32

Dr Le Rouge

Re : [Résolu] Problème Java : "factory already defined"

J'avais vu ce lien, mais le problème c'est que ce n'est pas moi qui fait appel à cette méthode, c'est la fonction main du .jar ... hmm Mais merci quand même smile

Par contre, j'ai trouvé une "ruse" en faisant appel à la main à la bonne fonction de l'archive ! Ça n'empêche que j'aimerais bien en savoir plus sur le fonctionnement de ces "factory" ^^

Je passe le problème en [Résolu], mais je veux bien des éclairages sur le sujet : en dépit des recherches que j'ai fait, je n'ai pas trouvé de moyen de lancer plusieurs factories ni d'en dégager une "à la main"...


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#4 Le 25/05/2011, à 20:07

trapangle

Re : [Résolu] Problème Java : "factory already defined"

Pourquoi est-ce que tu appelles deux fois la fonction JarRsrcLoader.main(...) ? Tu charges deux jars différents ou deux fois le même ? Quand j'utilise un jar externe, je le mets dans mon classpath et je ne passe pas par le JarRscrLoader (jamais entendu parler d'ailleurs), j'instancie un objet et j'appelle la fonction dont j'ai besoin dans la librairie.

Factory c'est un des design patterns (pour les français : patron de conception fabrique). Je suppose que ce n'est pas utilisé que dans le monde java, mais aussi dans les autres langages orientés objet. C'est un concept similaire à un constructeur, mais on ne connait pas la classe exacte qu'on veut créer au moment où on rédige le code. Pour en savoir plus.
Si tu n'as jamais entendu parler des design patterns, je recommande de se renseigner sur les singleton, state, observer, facade, decorator et factory patterns (les bases de l'orienté objet sont un préliminaire).


Mathematics is not a crime

Hors ligne

#5 Le 25/05/2011, à 20:59

Dr Le Rouge

Re : [Résolu] Problème Java : "factory already defined"

Oké, je vais regarder ça. Merci bien big_smile


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne