Page 1 of 1

installing jaxp transformer for Oxygen Editor 16.1

Posted: Thu Feb 05, 2015 1:26 am
by atuccill
Hello,

I am working on a java application that transforms XML documents using the "default" JAXP/javax transformer (javax.xml.transform.TransformerFactory). I am using Oxygen Editor 16.1 to develop the stylesheets and want to test my stylesheets in Oxygen with the same transformer that the java application uses. I've selected the JAXP transformer in the transformation scenario dialog but I got the error message

'A JAXP transformer implementation could not be instantiated! Please install it in the folder: file:/C:/Program Files/Oxygen XML Editor 16/lib/ and set the transformer factory property in Preferences -> XML -> XSLT-FO-XQuery -> XSLT. Original error was: class java.lang.IllegalAccessException with message: Class ro.sync.xml.transformer.c can not access a member of class javax.xml.transform.TransformerFactory with modifiers "protected"'

I then tried setting the "javax.xml.transform.TransformerFactory" system property to "javax.xml.transform.TransformerFactory" (that seems weird but I believe it is the right class name), changing the validation engine to JAXP, and putting one or both of the following jars in the specified location:
JAXP_160.jar (downloaded from https://jaxp.java.net/downloads.html)
javax.xml_1.3.4.v201005080400.jar (copied from my Eclipse installation)

but I get the same error. Does anyone know how I should configure the JAXP transformer? Thanks for any help.

Re: installing jaxp transformer for Oxygen Editor 16.1

Posted: Thu Feb 05, 2015 11:53 am
by adrian
Hi,

Note the instructions from the JAXP download page. JAXP_160.jar is an installer jar, it's not the actual JAXP jar library. So you must first install/unpack it (preferably not in the Oxygen folder):

Code: Select all

java -jar JAXP_160.jar
Then copy (from jaxp-1_6_0\lib) jaxp-ri.jar to the Oxygen/lib folder. Note that jaxp-api.jar is not necessary (Oxygen has its own), so it would be best to leave it out.

As fas as I can tell, the javax.xml.transform.TransformerFactory (the Value field from Preferences -> XML -> XSLT-FO-XQuery -> XSLT) should be set to com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl (that's the default that I found set in jaxp-ri.jar\META-INF\services\javax.xml.transform.TransformerFactory).
Also note that this transformer factory (probably an older version) is built into the Java runtime (Java SE 6 and later), so you can simply set the Value in Oxygen and just give it a go (without copying the jar).
Unknowingly you may have actually been using the builtin one, and not the JAXP library (1.6.0) that you mentioned. Check within your Java code which one you are using:
How do I find out which JAXP implementation is in use and where it was loaded from?

Regards,
Adrian

Re: installing jaxp transformer for Oxygen Editor 16.1

Posted: Thu Feb 05, 2015 7:08 pm
by atuccill
That worked. Thanks very much for the help and info, Adrian!