2016-08-22 3 views
0

javax.xml.transform.Transformerに基づいてXSLT処理を行うJavaアプリケーションを実行しています。私はjava-7-openjdk-amd64を使って古いノートブックでそれを開発しました。別のマシンでJava XSLT処理がTransformerConfigurationExceptionをスローする

javax.xml.transform.TransformerConfigurationException: コンパイルスタイルシートに失敗しましたjava-8-openjdk-amd64と 私は別のマシン上でそれを実行するトランスには、次の例外がスローされますインストールされています。 1エラーが検出されました。

XPST0017:XPathの構文エラーは、[...] はnet.sf.saxon.PreparedStylesheet.prepare(PreparedStylesheetで{http://xml.apache.org/xslt/java} java.text.SimpleDateFormat.new() 名前マッチング1引数の機能を見つけることができません。 Javaの:net.sf.saxon.TransformerFactoryImpl.newTemplates(net.sf.saxon.TransformerFactoryImpl.newTransformerでTransformerFactoryImpl.java:139) (TransformerFactoryImpl.java:91)

XSLファイルのルックスで176) このように(重要でない部分は除外します):

<?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> 

トランスフォーマーには明らかにSimpleDateFormatを呼び出す際に問題がありますが、なぜですか?私はJava7とJava8に関してこれに関する情報を見つけることができませんでした。私はJdk7でコンパイルされたJarファイルをコピーし、それを他のマシンで実行しました。同じ問題ですので、実行時の問題と思われます。 JavaとXSLTについては、まだいくつかのQ + Aがありますが、私にとっては役に立たないものは何もありません。

答えて

0

この宣言<xsl:stylesheet version="2.0"は、XSLT v2.0が実際に使用されているとは限りません。 javax.xml.transform.Transformer古いマシン(java-7-openjdk-amd64)のXSLT v1.0と、他のマシンのSaxon v9.1.0(java-8-openjdk-amd64)のXSLT v2.0を「秘密裏に」使用しました。

依存関係はコンパイル時にmaven pom.xmlによって設定されました。しかし、明らかにJre7でこれを実行しても効果はありませんでした。私はスタックトレース(net.sf.saxon.TransformerFactoryImpl)を見て気づいたかもしれませんが、以前はエラーがなかったので、私は特定のTransformerFactory実装について認識していませんでした。

関連する問題