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

Reply via email to