Package: libeclipse-jdt-core-compiler-batch-java
Version: 3.35.0+eclipse4.29-2
Severity: normal
File: /usr/share/java/eclipse-jdt-core-compiler-batch.jar
X-Debbugs-Cc: [email protected]

Dear Maintainer,

# 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


-- System Information:
Debian Release: 13.3
  APT prefers stable-security
  APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-10-amd64 (SMP w/48 CPU threads; PREEMPT)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

-- no debconf information

Reply via email to