Requirements... Tomcat and JDK
Quote from zkiwi34 on 9. September 2025, 16:53Will 8.2CE run under tomcat 10?
What is (if any) the JDK version that works with it? JDK 11, 17, higher?
Will 8.2CE run under tomcat 10?
What is (if any) the JDK version that works with it? JDK 11, 17, higher?
Quote from kilian.folger on 9. September 2025, 17:09Hi zkiwi,
Tomcat 10 uses
jakarta.
instead ofjavax.
namespaces (See https://blogs.oracle.com/javamagazine/post/transition-from-java-ee-to-jakarta-ee for the background) and is therefore not compatible with web apps developed for Java EE and Jakarta EE 8. Making JRS compatible with Tomcat 10 would require some very deep source code changes.Cloud is planning to migrate Jasper Reports Server Pro to Jakarta in version 10. You can check out their recent webinar https://www.youtube.com/watch?v=x1FaqIM7Io0 for more information.
As for JDK versions - JRS needs to be compiled with Java compliance level 1.8. I've verified that this works with JDK versions 1.8 or 11, but not 17. You can run a JasperReports server on Java 17, although there is a bug where you can't import an exported repository if the repository had any report schedules in it. Apart from that, everything works, though. Java 17 is officially supported after all. Java 1.8 and 11 also work, of course, and without that export bug.
Hi zkiwi,
Tomcat 10 uses jakarta.
instead of javax.
namespaces (See https://blogs.oracle.com/javamagazine/post/transition-from-java-ee-to-jakarta-ee for the background) and is therefore not compatible with web apps developed for Java EE and Jakarta EE 8. Making JRS compatible with Tomcat 10 would require some very deep source code changes.
Cloud is planning to migrate Jasper Reports Server Pro to Jakarta in version 10. You can check out their recent webinar https://www.youtube.com/watch?v=x1FaqIM7Io0 for more information.
As for JDK versions - JRS needs to be compiled with Java compliance level 1.8. I've verified that this works with JDK versions 1.8 or 11, but not 17. You can run a JasperReports server on Java 17, although there is a bug where you can't import an exported repository if the repository had any report schedules in it. Apart from that, everything works, though. Java 17 is officially supported after all. Java 1.8 and 11 also work, of course, and without that export bug.
Quote from zkiwi34 on 9. September 2025, 18:37So...
I could install and run JRS 8.2CE with JDK 11 in play
BUT
Tomcat would have to be Tomcat 9Is that right, or is my brain pining for the fjords etc?
So...
I could install and run JRS 8.2CE with JDK 11 in play
BUT
Tomcat would have to be Tomcat 9
Is that right, or is my brain pining for the fjords etc?
Quote from kilian.folger on 9. September 2025, 18:51No, no fjords. You've understood correctly.
The community is also working on migrating the CE version to Jakarta. It should be implemented sometime during the first half of next year.
No, no fjords. You've understood correctly.
The community is also working on migrating the CE version to Jakarta. It should be implemented sometime during the first half of next year.
Quote from kilian.folger on 12. September 2025, 10:17Hello zkiwi34,
I forgot to mention the other day: You can fix the import+schedule problem and thus get full support for Java 17 by configuring your application server a little. You have to add the following JVM options:
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED
--add-opens=java.base/java.nio.channels=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.regex=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/javax.security.auth.login=ALL-UNNAMED
--add-opens=java.base/javax.security.auth=ALL-UNNAMED
--add-opens=java.base/jdk.internal.access.foreign=ALL-UNNAMED
--add-opens=java.base/sun.net.util=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
--add-opens=java.base/sun.util.calendar=ALL-UNNAMEDSee section 4.1.1 of the JRS CE 8.2.0 install guide for details on how to set these in different app servers.
Sorry for forgetting to mention this until now.
Hello zkiwi34,
I forgot to mention the other day: You can fix the import+schedule problem and thus get full support for Java 17 by configuring your application server a little. You have to add the following JVM options:
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED
--add-opens=java.base/java.nio.channels=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.regex=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/javax.security.auth.login=ALL-UNNAMED
--add-opens=java.base/javax.security.auth=ALL-UNNAMED
--add-opens=java.base/jdk.internal.access.foreign=ALL-UNNAMED
--add-opens=java.base/sun.net.util=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED
See section 4.1.1 of the JRS CE 8.2.0 install guide for details on how to set these in different app servers.
Sorry for forgetting to mention this until now.