spring-projects / spring-framework

Spring Framework
https://spring.io/projects/spring-framework
Apache License 2.0
56.23k stars 37.98k forks source link

JRDefaultCompiler constructor no longer public in Jasper Reports 1.0.1 [SPR-1265] #5967

Closed spring-projects-issues closed 12 years ago

spring-projects-issues commented 19 years ago

Patrick Dumontel opened SPR-1265 and commented

The AbstractJasperReportsView's reportCompiler initialization on line 172 reads:

private JRCompiler reportCompiler = new JRDefaultCompiler();

However, in JasperReports 1.0.1, the constructor is no longer public. There is a public getInstance() method, so changing to:

private JRCompiler reportCompiler = JRDefaultCompiler.getInstance();

should fix.


Affects: 1.2.3

spring-projects-issues commented 19 years ago

Juergen Hoeller commented

That's actually to be considered a JasperReports bug, or more specifically a breakage of backwards compatibility in a point release! If that constructor was public in JasperReports 1.0.0 (and previous 0.6.x releases), it absolutely needs to remain public in 1.0.1. I would inquire with the JasperReports to make it public again, even if deprecated, and release a corresponding patch release. They can turn it to private in JasperReports 1.1, but not in 1.0.1.

We might use the JasperReports 1.0.1 JRDefaultCompiler.getInstance() method in Spring 1.3, although that will require the use of JasperReports 1.0.1+. Spring 1.2.x currently supports JasperReports 0.6.5+, but I guess we'll change that to JasperReports 1.0.1+ as of Spring 1.3 then.

Juergen

spring-projects-issues commented 19 years ago

Patrick Dumontel commented

Sorry, didn't mean to start a debate on the proper versioning of software, just alerting to a problem anyone upgrading their jars within a web application will run into.

1.2.x can safely upgrade to 1.0.0--I've done so myself. It's this new 1.0.1 that has the issue. Here's another thing to consider: the leading tools for Jasper--Jasper Assistant and iReport--have just issued new versions that support 1.0.1 by default. Therefore people using these tools will likely compile the reports in 1.0.1 and could get serialVersionUID errors when putting the *.jasper files in their apps.

The workaround would be to not compile and let AbstractJasperReportsView do the compiling... Another is to use iReport's compatibility setting and dropping to either 1.0.0 or the 0.6.x version that's currently supported by 1.2.x.

Looking forward to the 1.3 fix ;)