Использование 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
...
У меня есть следующие библиотеки в плагине classpath: xml-apis.jar, xercesImpl.jar, serializer.jar, xalan.jar
Я даже не могу создать экземпляр класса с помощью:
c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl");
Object o = c.newInstance();
Возвращает ClassNotFoundException
Но я могу создавать экземпляры других классов из того же jar-файла и без проблем запускать тот же код вне Eclipse.
Любая идея?
Редактировать: экземпляр класса TransformerFactory (скажем, "class1") является частью внешней библиотеки, добавленной в путь к классу плагина, тогда как xalan.jar также находится в пути к классу плагина. Если я переместить этот "class1" в плагин, он найдет поставщика и работает нормально.
1 ответ
Хотя я видел эту проблему однажды, но я не очень уверен, как я решил ее.
Если вы используете JDK 1.5 или выше, попробуйте удалить xml-apis.jar
, Это было необходимо для Java 1.4 для поддержки XML.
Обновление 1
Хорошо. Из вашего вопроса я сделал вывод, что вы пишете плагин Eclipse. Если да, то вы добавили вышеупомянутые банки, используя
plugin.xml->Runtime->classpath
? Если нет, попробуйте сделать это. Плагин Eclipse рассматривает только свои записи времени выполнения->classpathОбновление 2
Для меня это все еще кажется проблемой разрешения пути к классам. Хотя трудно сказать, почему это происходит. Для проверки вы также можете проверить, изменив порядок включенных банок в
plugin.xml->Runtime->classpath
,Надеюсь, это поможет.
PS: Поскольку вы работаете над разработкой плагинов Eclipse, я бы посоветовал вам пройтись по этой статье Eclipse - рассказу о двух виртуальных машинах и множестве загрузчиков классов.