Я запускаю приложение Java, которое должно выполнить некоторую обработку XSLT на основе javax.xml.transform.Transformer
. Я разработал его на более старом ноутбуке, используя java-7-openjdk-amd64
. Когда я запускаю его на другой машине с java-8-openjdk-amd64
установлен трансформатор выдает следующее исключение:Обработка Java XSLT throws TransformerConfigurationException при запуске на другом компьютере
javax.xml.transform.TransformerConfigurationException: Не удалось компиляции таблицы стилей. 1 обнаружена ошибка.
XPST0017: XPath синтаксис ошибка [...] не удается найти соответствующие функции 1-аргумента с именем {} http://xml.apache.org/xslt/java java.text.SimpleDateFormat.new() в net.sf.saxon.PreparedStylesheet.prepare (PreparedStylesheet. Java: 176) на net.sf.saxon.TransformerFactoryImpl.newTemplates (TransformerFactoryImpl.java:139) в net.sf.saxon.TransformerFactoryImpl.newTransformer (TransformerFactoryImpl.java:91)
в XSL файл выглядит как это (оставляя неважные детали):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xslt/java" exclude-result-prefixes="java">
<xsl:template match="/">
<html>
<body>
<h1>Test Report</h1>
<h2>Test run</a> at
[<xsl:value-of
select="java:format(java:java.text.SimpleDateFormat.new('dd.MM.yyyy HH:mm:ss'), java:java.util.Date.new())" />]
</h2>
У Transformer, очевидно, есть проблема с вызовом SimpleDateFormat
, но почему? Я не мог найти никакой информации об этом в отношении Java7 и Java8. Я даже скопировал файл Jar, скомпилированный с Jdk7 an, и запустил его на другой машине. Такая же проблема, так что это проблема времени выполнения. Есть несколько Q + A на SO о java и XSLT, но ничего не оказалось полезным для меня.