Mark,
On 10/7/21 11:46, Mark Thomas wrote:
Hi,
As you will have seen from the 8.5.72 release vote and/or bug 65599
there is an issue with 8.5.x, Java 17 and ECJ.
In short:
- the Java EE 7 spec requires that Tomcat 8.5.x runs on Java 7
- Tomcat 8.5.x ships with ECJ 4.6.3, the newest version that runs on
Java 7
- ECJ 4.63 fails on Java 17 onwards
I was wondering about shipping two versions of ECJ. Using 4.6.3 if
running on Java 7 and 4.20 (or whatever Tomcat 9 onwards is using at the
time) if running on Java 8.
The implementation could go in ClassLoaderFactory.validateFile(). The
idea is that it would skip adding the ECJ version that wasn't required
to the class path. It would be a bit of a hack and it would almost
certainly need to be hard-coded rather than configurable in anyway.
This isn't the only way I can think of to do this but it is the one that
requires the least user input (none) and is the least 'hacky'.
Thoughts?
Is this a problem worth solving? If it is, is there a better way?
+1 for solving this issue rather than just hoping people will know what
to do.
Auto-loading the right JAR file seems like a fine approach to me.
A simple hard-coded switch also seems just fine to me. It's a pretty
special case. Maybe name the JAR file(s) conveniently so that the code
doesn't need to be updated whenever a replacement library needs to be added?
-chris
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org