2011-01-14 6 views
0

Je suis confronté à des problèmes d'utilisation de xalan dans le plugin eclipse.
Lorsque je tente de créer une instance d'usine par:Utilisation de Xalan dans le plugin Eclipse

TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null); 

J'obtiens l'erreur:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found 
... 

Je suit libs dans le plugin classpath: xml-apis.jar, xercesImpl.jar, serializer.jar , xalan.jar

Je ne peux même pas créer une instance de classe par:

c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl"); 
Object o = c.newInstance(); 

Il renvoie ClassNotFoundException

Mais je peux créer des instances d'autres classes à partir du même pot et peut exécuter le même code en dehors de l'éclipse sans problème.

Une idée?

Editer: La classe d'instanciation TransformerFactory (disons "class1") fait partie d'une bibliothèque externe ajoutée au classpath du plugin où le fichier xalan.jar se trouve également dans le classpath du plugin. Si je déplace ce "class1" dans le plugin, il trouve le fournisseur et fonctionne bien.

Répondre

1

Bien que j'ai vu ce problème une fois, mais je ne suis pas très sûr de la façon dont je l'ai résolu. Si vous utilisez JDK 1.5 ou supérieur, essayez d'enlever xml-apis.jar. Il était nécessaire que Java 1.4 supporte XML.

Update 1


Ok. D'après votre question, j'ai déduit que vous écrivez un plug-in Eclipse. Si oui, avez-vous ajouté les bocaux ci-dessus en utilisant plugin.xml->Runtime->classpath? Si ce n'est pas le cas, essayez de le faire. Plugin Eclipse prend en compte que son runtime-> entrées classpath

Mise à jour 2


Pour moi, il apparaît toujours comme un problème de résolution classpath. Cependant, c'est difficile de dire pourquoi cela se passe. Pour un essai, vous pouvez également vérifier en changeant l'ordre des pots inclus dans plugin.xml->Runtime->classpath.

Espérons que cela aidera.

PS: Puisque vous travaillez sur le développement du plug-in eclipse, je vous suggère de passer par cet article Eclipse - a tale of two VMs and many classloaders.

+0

Merci @Favonius pour votre réponse. J'ai eu votre avis et retiré le pot, mais malheureusement, cela n'a pas fonctionné. J'ai également essayé les plugins xalan, excrces et serializer au lieu de libs. Cela n'a pas aidé non plus. Une autre idée? – WSK

+0

@Leslie Norman: Ok. D'après votre question, j'ai déduit que vous écrivez un plug-in Eclipse. Si oui, alors avez-vous ajouté les jars ci-dessus en utilisant 'plugin.xml-> Runtime-> classpath'? Si ce n'est pas le cas, essayez de le faire. Le plugin Eclipse considère uniquement ses entrées 'runtime-> classpath'. – Favonius

+0

J'ai de nouvelles découvertes que j'ai ajoutées au bas de la question. Jetez un coup d'oeil s'il vous plait. Je m'excuse si cela change tout le scénario. – WSK