Hi Niels

Apparently in your environment you are running a custom Temurin based JRE deployment without 'jdk.net <http://jdk.net>' module. We are not going to treat this issue as a defect. Please see Ryan's comment below.

You have an option of using a custom ConnectionOperator or requesting a new feature to have DefaultHttpClientConnectionOperator avoid 'jdk.net <http://jdk.net>' specific functionality when configured to do so.

Oleg

On 01/06/2026 02:36, Ryan Schmitt wrote:
Works for me?

src/hc/core # cat Test.java
void main() {
    var supportedOptions = jdk.net.Sockets.supportedOptions(java.net.Socket.class);
    IO.println("Supported Socket options: " + supportedOptions);
}
src/hc/core # mise exec java@corretto-25 -- java Test
Supported Socket options: [SO_KEEPALIVE, SO_RCVBUF, SO_REUSEPORT, SO_SNDBUF, IP_TOS, TCP_KEEPCOUNT, TCP_KEEPINTERVAL, TCP_NODELAY, SO_REUSEADDR, SO_LINGER, TCP_KEEPIDLE]
src/hc/core # mise exec java@temurin-jre-25 -- java Test
Supported Socket options: [SO_KEEPALIVE, SO_RCVBUF, SO_REUSEPORT, SO_SNDBUF, IP_TOS, TCP_KEEPCOUNT, TCP_KEEPINTERVAL, TCP_NODELAY, SO_REUSEADDR, SO_LINGER, TCP_KEEPIDLE]

Since `jdk.net <http://jdk.net>` isn't developer tooling, there's no reason a JRE shouldn't have it (contrast `jdk.compiler`). I think Gary's right, and whatever's going on here has to do with Jigsaw, not the JDK/JRE distinction. It'd be useful to have more info, such as the JVM invocation, the contents of the --class-path versus the --module-path, whether passing `--add-modules jdk.net <http://jdk.net>` fixes the problem, etc.

On Mon, Jan 5, 2026 at 3:50 AM Oleg Kalnichevski <[email protected]> wrote:

    On Mon, 2026-01-05 at 11:13 +0000, Niels van Nieuwenburg wrote:
    > Hello,
    >
    > Apache HTTPClient5 version 5.5.2 introduced a dependency on the
    > 'jdk.net <http://jdk.net>' module, calling jdk.net.Sockets and
    > jdk.net.ExtendedSocketOptions from
    > DefaultHttpClientConnectionOperator.
    > The commit which introduced this:
    >
    
https://github.com/apache/httpcomponents-client/commit/9c83a8e43fb82467351a6d16b1ae78e0f6320873#diff-c8d113aa21d5fe2678c4c36f731cda6ed01d172d7e47e4d9fc527a5d4a921077R40-R41
    >
    > Since our applications are running using just the JRE, we get
    runtime
    > exceptions stating 'java.lang.NoClassDefFoundError: jdk/net/Sockets'
    >         at deployment.<our
    > service>.war//org.apache.hc.client5.http.impl.io
    <http://client5.http.impl.io>.DefaultHttpClientCon
    >
    nectionOperator.<clinit>(DefaultHttpClientConnectionOperator.java:85)
    >         at deployment.<our
    > service>.war//org.apache.hc.client5.http.impl.io
    <http://client5.http.impl.io>.BasicHttpClientConne
    > ctionManager.<init>(BasicHttpClientConnectionManager.java:207)
    >
    > We're running the Java 21 JRE, using Eclipse Temurin 21.0.9+10, on
    > WildFly 36.0.1.
    > When using the HTTPClient 5.5.1 everything still works properly.
    > Our tests run using the JDK, so they don't detect this.
    >
    > It would be great if this dependency can be removed.
    > Thank you in advance.
    >

    Hi Ryan

    Do you know if we have rendered our latest releases unusable with JRE
    in general by making them dependent on jdk.net <http://jdk.net> or
    is this something
    that affects Eclipse Temurin and not Amazon Corretto?


    Oleg


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to