Java par défaut de JAXB mise en œuvre est choisie au-dessus de mon classpath
J'ai écrit une application java qui utilise JAXB pour XSL transformations. J'ai inclus le saxon9.jar dans mon classpath afin que je puisse utiliser XSLT 2.0, plutôt que de XSLT 1.0 sur la ligne de commande.
java -classpath ./lib/saxon9.jar:./ -jar myApp.jar
J'ai inclus le code dans mon XSL pour signaler le XSLT utilisé.
<xsl:comment><xsl:text >
</xsl:text>XSLT Version: <xsl:value-of select="system-property('xsl:version')" /> <xsl:text >
</xsl:text>XSLT Vendor: <xsl:value-of select="system-property('xsl:vendor')" /> <xsl:text >
</xsl:text>XSLT Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')" /> <xsl:text >
</xsl:text></xsl:comment>
Des rapports.
XSLT Version: 1.0
XSLT Vendor: Apache Software Foundation (Xalan XSLTC)
XSLT Vendor URL: http://xml.apache.org/xalan-j
C'est le défaut de mise en œuvre qui fait partie de la JVM.
Comment puis-je obtenir pour utiliser le Saxon que j'ai indiqué?
Suivi:
Si aucune de ces méthodes de travail (à l'exception de la passation de la saxons pot dans la approuvé un répertoire), mais ils devraient tous avoir travaillé. Il semble que la combinaison de mon utilisation de l' "-jar myApp.jar" et de vouloir une alternative XSLT mise en œuvre étaient incompatibles. En d'autres mots...
java -Djavax.xml.transformer.TransformerFactory=net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./-pot myApp.jar
...ne fonctionne pas, mais ce n'...
java -Djavax.xml.transformer.TransformerFactory=net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp
...il est intéressant de noter, je n'ai même pas de spécifier l'usine et j'ai l'saxon version...
java -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp
Vous devez vous connecter pour publier un commentaire.
Consultez la javadoc de TransformerFactory.newInstance() par tous les moyens possibles pour configurer l'usine.
Avez-vous essayé de placer votre pot dans le approuvé répertoire?
Si vous ne voulez pas l'effet global, utilisez l'option suivante:
dans la ligne de commande.
Le dernier exemple que vous avez posté(w/o -Djavax...) fonctionne parce que les META-INF/services de répertoire contient un fichier nommé
avec le contenu
La raison à l'aide de
œuvres et
n'est qu'à l'aide de l'-jar option indique à java(w).exe pour ignorer le reste de la ligne de commande et de tirer tout (classpath inclus) à partir du pot le fichier de manifeste. Si vous mettez saxon9.jar dans votre bocal manifeste du classpath, il doit travailler.
Cette propriété système doit définir le remplacement de la TransformerFactory:
Je crois que l'usine de classe que vous souhaitez est net.sf.saxon.TransformerFactoryImpl
Comment sur