2011-01-14 6 views
0

У меня проблемы с использованием xalan в плагине eclipse.
Когда я пытаюсь создать экземпляр фабрики по:Использование Xalan в плагине Eclipse

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

Я получаю ошибку:

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

Я следующий LIBS в плагине: XML классам-apis.jar, xercesImpl.jar, serializer.jar , xalan.jar

Я даже не могу создать экземпляр класса по:

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

Он возвращает ClassNotFoundException

Но я могу создавать экземпляры других классов из одной и той же банки и без проблем запускать такой же код вне eclipse.

Любая идея?

Edit: TransformerFactory инстанцирование класса (скажем, «class1») является частью внешней библиотеки, добавленной в плагин классах xalan.jar Тогда как это также плагин классов. Если я переведу этот «класс1» в плагин, он найдет поставщика и отлично работает.

ответ

1

Хотя я видел эту проблему один раз, но я не очень уверен, как я ее решил.

Если вы используете JDK 1.5 или выше, попробуйте удалить xml-apis.jar. Это было необходимо для Java 1.4 для поддержки XML.

Update 1


Ok. Из вашего вопроса я предположил, что вы пишете плагин eclipse. Если да, то добавили ли вы вышеуказанные банки, используя plugin.xml->Runtime->classpath? Если не пытайтесь это сделать. Eclipse, плагин учитывает только его runtime-> записи пути к классам

Update 2


Для меня это до сих пор представляется как проблема разрешения CLASSPATH. Хотя, трудно сказать, почему это происходит. Для проверки вы также можете проверить, изменив порядок включенных банок в plugin.xml->Runtime->classpath.

Надеюсь, это поможет.

PS: Поскольку вы работаете над разработкой плагина eclipse, поэтому я предлагаю вам ознакомиться с этой статьей Eclipse - a tale of two VMs and many classloaders.

+0

Спасибо @Favonius за ваш ответ. Получил ваш момент и удалил указанную банку, но, к сожалению, она не сработала. Также попробовали плагины xalan, excrces и serializer вместо простых библиотек. Не помогло. Любая другая идея? – WSK

+0

@Leslie Norman: Хорошо. Из вашего вопроса я предположил, что вы пишете плагин eclipse. Если да, добавили ли вы вышеуказанные банки с помощью 'plugin.xml-> Runtime-> classpath'? Если не пытайтесь это сделать. Плагин Eclipse учитывает только его элементы runtime-> classpath. – Favonius

+0

У меня есть новые выводы, которые я добавил в нижней части вопроса. Пожалуйста, смотрите. Я извиняюсь, если он меняет весь сценарий. – WSK

Смежные вопросы