Reputation: 2787
Below code was developed in a JDK 1.7.0 environment a long time ago, but when application is run as a jar in a Java 1.8 runtime environment, there is always an exception when generating the transformer.
Source xsl = new StreamSource(ResultsHTMLTransformer.class.getResourceAsStream(styleSheetPath));
Transformer transformer = TransformerFactory.newInstance().newTransformer(xsl);
The exception is as below. I am confused on how this could happen. Shouldn't Java 1.8 be backward compatible with previous versions?
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
Upvotes: 0
Views: 1903
Reputation: 2787
Just realized that the application was developed using IBM JDK, while the environment I deployed it has OpenJDK installed. Once I deployed it to an environment with IBM JRE, it worked fine.
There might be some compatibility issues here, but can't be sure, as this is so basic a java function.
Below is output of java -version
of IBM JDK.
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
Upvotes: 1