当前位置: 首页 > 知识库问答 >
问题:

在JDK1.7.0中开发的Java XML transformer在Java 1.8运行时中不起作用

端木澄邈
2023-03-14

下面的代码很久以前是在JDK 1.7.0环境中开发的,但当应用程序在Java 1.8运行时环境中作为jar运行时,生成转换器时总是会出现异常。

Source xsl = new StreamSource(ResultsHTMLTransformer.class.getResourceAsStream(styleSheetPath));
Transformer transformer = TransformerFactory.newInstance().newTransformer(xsl);

例外情况如下。我对这怎么会发生感到困惑。Java 1.8不应该与以前的版本向后兼容吗?

ERROR:  'The first argument to the non-static Java function 'replace' is not a valid object reference.'
FATAL ERROR:  'Cannot convert data-type 'void' to 'reference'.'
           :Cannot convert data-type 'void' to 'reference'.
javax.xml.transform.TransformerConfigurationException: Cannot convert data-type 'void' to 'reference'.
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:1015)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:789)
    at com.ibm.test.report.ResultsHTMLTransformer.transformXMLtoHTML(ResultsHTMLTransformer.java:38)
    at com.ibm.test.report.KitchenReport.main(KitchenReport.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

Caused by: Cannot convert data-type 'void' to 'reference'.
    at com.sun.org.apache.xalan.internal.xsltc.compiler.CastExpr.typeCheck(CastExpr.java:189)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.CastExpr.<init>(CastExpr.java:145)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.Param.typeCheck(Param.java:160)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.SyntaxTreeNode.typeCheckContents(SyntaxTreeNode.java:487)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.Template.typeCheck(Template.java:294)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.SyntaxTreeNode.typeCheckContents(SyntaxTreeNode.java:487)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.typeCheck(Stylesheet.java:653)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.createAST(Parser.java:412)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:483)
    at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:568)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:974)
    ... 8 more

共有1个答案

潘高洁
2023-03-14

刚刚意识到应用程序是使用IBM JDK开发的,而我部署的环境中安装了OpenJDK。一旦我使用IBM JRE将其部署到环境中,它就工作得很好。

这里可能存在一些兼容性问题,但不能确定,因为这是一个非常基本的java函数。

下面是IBM JDK的java版本的输出。

Java(TM) SE Runtime Environment (build pwa6470_27sr1-20140411_01(SR1))
IBM J9 VM (build 2.7, JRE 1.7.0 Windows 7 amd64-64 Compressed References 20140410_195893 (JIT enabled, AOT enabled)
J9VM - R27_Java727_SR1_20140410_1931_B195893
JIT  - tr.r13.java_20140410_61421
GC   - R27_Java727_SR1_20140410_1931_B195893_CMPRSS
J9CL - 20140410_195893)
JCL - 20140409_01 based on Oracle 7u55-b13
 类似资料:
  • 我试图在单击按钮或菜单项时将用户重定向到另一个页面。不幸的是,onClick函数只在运行时起作用,在实际单击时不起作用,我不知道为什么。 这是我的功能 如果我调用函数时没有这样的回调 它在运行时调用,而不是在实际单击按钮或菜单项时调用。被调用的函数没有任何问题(我尝试过在单击时console.log一些东西,但没有结果)。 我错过了什么或做错了什么?

  • 我开始开发一个经典的Spring Boot MVC应用程序。我使用依赖注入(使用、注释)没有任何问题。 当我尝试使用依赖注入运行某些集成测试时,我会以相同的方式从JUnit得到以下错误消息: 在包中,我有一个没有注释的接口和一个用注释的类。 我不明白,如果DI可以运行我的应用程序,那么为什么它在测试中不起作用。不知何故,我的注释实现类没有被spring boot发现,就像错误消息所说的那样。 测试

  • 在android Studio中,当我运行一个简单的代码来获取一个整数时,它会给我一个关于Scanner类的错误。 我只是希望它打印一个数字,但是与eclipse和其他ide不同,它给出了一个错误。我实际上试图修改gradle,但它没有工作(也许我做错了什么,老实说我不确定)。任务执行失败':yad:MyClass.main()'。 处理“命令”C:/程序文件/Android/Android St

  • 我尝试运行一个空的应用程序(hello world的deafult应用程序),当我尝试运行该应用程序时,我得到了错误。 我执行的步骤是: 创建了空项目: 打开了Nexus S API P仿真程序。 按下了运行按钮 等待应用程序自行启动(它立即打开和关闭) 从具有标题的菜单中重新打开应用程序 “MyCollege持续停止”“应用程序信息”“关闭应用程序” 你知道怎么解决这个吗? 这是我的Androi

  • 我希望使用Maven在任何平台上使用JavaFX执行jar,无论主机上是否安装了JavaFX。

  • 我是Python新手,我正在尝试将数据存储在.json中,然后通过Python访问和修改它。目前我遇到一个问题,如果我尝试使用变量而不是直接修改它,我就无法修改数据。如果它不在变量中,或者我只是在读取信息,或者它不在函数中,它就可以正常工作。 .json: