Package: eclipse-jdt-core-compiler-batch
Version: 3.35.0
# Issue Description
Package: libeclipse-jdt-core-compiler-batch-java` version
`3.35.0+eclipse4.29-2
Distribution: Debian 13 (Trixie)
Severity: High (breaks Java 17 applications using JSP/Jasper
Affects: All Tomcat 10 deployments on Java 17
# Inconsistency Details
MANIFEST.MF declares:
- Created-By: 21.0.4+7-Debian-3 (Debian)
- Bundle-RequiredExecutionEnvironment: JavaSE-17
Actual bytecode version:
$ javap -v org/eclipse/jdt/internal/compiler/env/INameEnvironment.class
public interface org.eclipse.jdt.internal.compiler.env.INameEnvironment
minor version: 0
major version: 65 <-- Java 21 (should be 61 for Java 17)
# Impact
This inconsistency breaks **Apache Tomcat JSP compilation** for
applications running on Java 17:
java.lang.UnsupportedClassVersionError:
org/eclipse/jdt/internal/compiler/env/INameEnvironment
has been compiled by a more recent version of the Java Runtime (class
file version 65.0),
this version of the Java Runtime only recognizes class file versions
up to 61.0
**Affected components:**
- Apache Tomcat 10.x with JSP support
- Any application using Eclipse JDT Core for runtime compilation on Java 17
- Spring Boot applications with embedded Jasper
# Root Cause Analysis
The package was built using Java 21 (Debian 13 default) while the
MANIFEST.MF was not updated to reflect the actual bytecode target version.
- Critical dependency chain:**
libtomcat10-java
├─ Depends: libeclipse-jdt-core-java (3.35.0)
└─ Depends: libeclipse-jdt-core-compiler-batch-java (3.35.0) ←
PROBLEMATIC
- Impact:
- `libtomcat10-java` has a **hard dependency** on the problematic
package
- All Tomcat 10 installations on Debian 13 automatically pull this
package
- Applications running on Java 17 fail when JSP compilation occurs
- Expected behavior:
- If compiled with Java 21, MANIFEST should declare
`Bundle-RequiredExecutionEnvironment: JavaSE-21`
- If targeting Java 17, package should be compiled with `javac
--release 17` flag
- Debian should provide separate packages for different Java versions
OR use the lowest common denominator (Java 17)
# Reproduction Steps
1. Install Debian 13 with default Java 17
2. Install `libtomcat10-java` and `eclipse-jdt-core-compiler-batch`
3. Deploy any Spring Boot application with JSP views
4. Access a JSP page
5. Observe `UnsupportedClassVersionError` Exception
# Proposed Solutions
- Update the build configuration to explicitly target Java 17
Best Regards