We’re using formulas like this:
<<[getPricePurchase().doubleValue() * getQuantity().doubleValue()]:"# ##0.00">>
The expression getPricePurchase()
produces a BigDecimal
object, while getQuantity()
is a Double
.
It had been working well on Java 11. When upgrading to Java 17, we got this error:
An error has been encountered at the end of expression ‘getPricePurchase().doubleValue() * getQuantity().doubleValue()]:’. Can not apply operator '’ to operands of type ‘class java.lang.Object’ and ‘class java.lang.Object’.*
What can I do to fix it?
@thai I have tested the scenario on my side and the formula is calculated properly on my side. Could you please create a simple template and code that will allow us to reproduce the problem? We will check the issue and provide you more information.
Thanks for your reply, @alexey.noskov.
Indeed, looks like that’s not the case. Something else is wrong - I’ll update the question when having more information.
@thai I have noticed that code like the following does not work and throws an exception:
Document doc = new Document("C:\\Temp\\in.docx");
MessageTestClass sender = new MessageTestClass("LINQ Reporting Engine", "Hello, World");
ReportingEngine engine = new ReportingEngine();
engine.buildReport(doc, sender, "s");
doc.save("C:\\Temp\\out.docx");
To fix the problem it is required to disable UseReflectionOptimization
.
ReportingEngine.setUseReflectionOptimization(false);
Is this the problem you have encountered?
Thanks a lot for your support, @alexey.noskov.
Yes, that’s exactly the case. After I added that statement, everything goes well again.
Thank you.
@thai Thank you for confirmation. I have linked this thread to the appropriate issue WORDSJAVA-2682. We will let you know once it is resolved.