Как установить системное свойство Javax.xml.transform.TransformerFactory - PullRequest
0 голосов
/ 05 декабря 2018

Я использую javax.xml.transform.Transform для преобразования XML-файла в PDF.Само по себе это прекрасно работает, но некоторая часть проекта использует Xalan, который реализует свой собственный TransformerFactory, и что-то там не работает с кириллицей.

Я нашел на https://xml.apache.org/xalan-j/usagepatterns.htmlчто есть свойство, которое используется для определения используемой фабрики:

TransformerFactory - это абстрактный класс со статическим методом newInstance (), который создает конкретный подкласс, обозначенный javax.xml.transform.TransformerFactory.системное свойство.

Значение по умолчанию для этого системного свойства - org.apache.xalan.processor.TransformerFactoryImpl.

Мой вопрос: как настроить это свойство, чтобы не использовать Xalan

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Установите статически из командной строки при запуске вашей программы, используя флаг -D:

java -Dorg.apache.xalan.processor.TransformerFactoryImpl=com.xyz.YourFactory YourApp

Или динамически из вашего приложения, используя System.setProperty():

System.setProperty("org.apache.xalan.processor.TransformerFactoryImpl",
        "com.xyz.YourFactory");

Обратите внимание, что вам нужно использовать полное имя класса фабрики, и что фабрика должна быть на вашем пути к классам, чтобы любой из них работал.

0 голосов
/ 05 декабря 2018

Попробуйте установить его в качестве аргумента Java -Djavax.xml.transform.TransformerFactory=<factory class>

Вы также можете создать желаемую фабрику прямо в вашей программе как TransformerFactory tf = new SomeTransformerFactoryImpl();

...