Я пытаюсь перенести приложение из jdk 1.5 в jdk 1.6 без внесения каких-либо изменений, видимых конечному пользователю. Вывод приложения - это xml, сгенерированный с использованием jaxp, который является частью библиотек jdk. Поскольку версии jaxp различаются в jdk 1.5 и 1.6, полученный xml выглядит по-разному в каждой версии.Как использовать jaxp 3 с jdk 1.6?
Пример: DatatypeFatory.newInstance().newDuration(60)
производит «PT2H17M0.000S» в jdk 1.5 и «P0Y0M0DT2H17M0.000S» в jdk 1.6. Оба правильные, но я хочу избежать любых видимых изменений.
Такие классы, как DatatypeFactory, имеют механизм, позволяющий указать, какую реализацию следует использовать, но он зависит от указания полного имени класса. Поэтому теоретически я могу загрузить jaxp-банки с той же версией, которая используется в jdk 1.5, и позволить приложению использовать их. К сожалению, имена пакетов и классов в обеих версиях одинаковы, поэтому мне нужно как-то сказать java для загрузки классов из jar, а не jdk. Я пытался поставить jaxp jars в начале пути к классам, но это не помогло.
Можно ли указать java для загрузки классов из внешних jar, а не библиотек jdk? Могу ли я решить эту проблему любым другим способом?
Заранее спасибо
alse вы можете использовать собственный ClassLoader. DocumentBuilderFactory newInstance (String factoryClassName, ClassLoader classLoader) –