java - 使用 Java 1.8.0_251 转换 XSL 时出现致命错误
问题描述
尝试转换样式表时,我从 Java 1.8.0_251 收到以下错误。然而,Java 1.8.0_241 同样的样式表转换没有任何问题。当行 tFactory.newTransformer(stylesheet); 时出现错误 被执行。
也使用 xalan 2.7.2 而不是 Java 1.8.0._251 也可以,但是那个版本的 os xalan 真的很旧。
有没有人遇到过这样的事情?如果有怎么解决?
SimpleNotWorking04.xsl https://drive.google.com/file/d/1pUiMvVtVBmBvCwfPXNW__pXVCiS4c3RV/view?usp=sharing
SimpleWorking04.xsl https://drive.google.com/file/d/1OsOflQzGErvVFVsrmriqa0gbODS2OWi5/view?usp=sharing
如果您对上述两个文件进行比较,它只是添加到 SimpleNotWorking04.xsl 的一个空行,它会给出此错误。
注意“不定位”后面的数字(例如,不定位 10980:)将根据 XSL 内容而变化。
com.sun.org.apache.bcel.internal.generic.ClassGenException: Not targeting 10980: nop[0](1), but null ERROR:Not targeting 10980: nop[0](1), but null at com.sun.org.apache.bcel.internal.generic.BranchInstruction.updateTarget(BranchInstruction.java:217) at com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator.outline(MethodGenerator.java:1738) at com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator.outlineChunks(MethodGenerator.java:1169) at com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator.getGeneratedMethods(MethodGenerator.java:1899) at com.sun.org.apache.xalan.internal.xsltc.compiler.util.ClassGenerator.addMethod(ClassGenerator.java:137) at com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileNamedTemplate(Mode.java:557) at com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileTemplates(Mode.java:566) at com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileApplyTemplates(Mode.java:825) at com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.compileModes(Stylesheet.java:622) at com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.translate(Stylesheet.java:735) at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:478) at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:553) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:947) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:761) at simpletest.SimpleTest.main(SimpleTest.java:24) ERROR: 'Could not compile stylesheet' FATAL ERROR: 'Not targeting 10980: nop[0](1), but null' :Not targeting 10980: nop[0](1), but null
代码很简单,如下所示。
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.TransformerConfigurationException;
import java.io.File;
public class SimpleTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try{
StreamSource stylesheet = new StreamSource(new File("SimpleNotWorking04.xsl"));
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(stylesheet);
}
catch(TransformerConfigurationException tce) {
System.out.println("ERROR:"+tce.getMessage());
}
catch(Exception e){
System.out.println("ERROR:"+e.getMessage());
}
catch(Throwable t){
System.out.println("ERROR:"+t.getMessage());
}
System.out.println("Done transformation!!");
}
}
解决方案
这是 Java 8 251 版本中的一个错误。在向 Oracle 报告后,它已修复并随 Java 8 271 2020 年 10 月版本一起发布。
推荐阅读
- xaml - 在设置中增加字体大小时如何对齐按钮文本
- python - 如何使用 Python 将一个 JSON 对象的值转换为另一个 JSON 对象的值
- list - 如何将 3 个点随机添加到列表中?
- sql-server - 当日期在横断面发生变化时,余额计算不正确
- qr-code - 使用 Zebra S4M 打印后 QR 码缺少字符
- tensorflow - 将模型从 tensorflow 转换为 Coreml (4.0) 时出现实例归一化错误
- amazon-web-services - SQLite Flask - 运行 db.create_all() 命令时无法在 EC2 中打开数据库文件
- firebase - 谷歌分析 - 多个 URL 的多个数据流?
- c# - C#为什么调用隐藏的继承方法
- node.js - 从 Sequelize 的 Promise 中打破 for 循环