今天在调代码的时候遇到了一个异常: javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet - 致命错误: "无法变异样式表", 从网上找到了解决方案, 下面贴出来以备后用.
问题的出现是因为JDK自带的XALAN是阉割版的,很多功能没有,比如JAVA类型的方法调用。怎么办呢?
JAVA官方的写法是:
Apache - The org.apache classes, which have never been supported J2SE APIs but are used by the javax.xml package, have moved in 5.0 to com.sun.org.apache.package.internal so that they won‘t clash with
more recent, developer-downloaded versions of the classes. Any applications that depend on the org.apache classes being part of the J2SE release must do one of the following to work in 5.0:
Code the application so it uses only the supported interfaces that are part of JAXP.
Download the org.apache.xalan classes from Apache.
简单地说就是JDK从1.5以后整合了一些APACHE的类库,但是把包名从org.apache改成了com.sun.org.apache.package.internal以避免冲突。所以那些被阉割的部分大家可以放心地把APACHE的包放进CLASSPATH而不用怕冲突。所以只要下载一个XALAN.Jar包放到项目中即可解决这个问题
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet