Oleg Kalnichevski created HTTPCORE-802:
------------------------------------------
Summary: jdk.net.ExtendedSocketOptions causes compatibility
problems with newer JDKs
Key: HTTPCORE-802
URL: https://issues.apache.org/jira/browse/HTTPCORE-802
Project: HttpComponents HttpCore
Issue Type: Improvement
Reporter: Oleg Kalnichevski
jdk.net.ExtendedSocketOptions causes compatibility problems with newer JDKs
when using Java 8 as a release target (--release compile option).
Newer JDKs fail to import jdk.net package when targeting Java 8 apparently due
this feature being considered invalid for Java 8
{noformat}
$ mvn -v
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /home/oleg/opt/maven
Java version: 17.0.17, vendor: Amazon.com Inc., runtime:
/home/oleg/opt/amazon-corretto-17.0.17.10.1
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "6.12.107+deb13-amd64", arch: "amd64", family: "unix"
{noformat}
{noformat}
$ mvn clean compile -P-use-toolchains -DjavaVersion=8
{noformat}
{noformat}
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.16.0:compile (default-compile)
on project httpcore5: Compilation failure: Compilation failure:
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java:[52,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java:[48,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java:[49,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java:[44,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java:[45,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java:[41,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java:[42,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/util/ReflectionUtils.java:[30,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/util/ReflectionUtils.java:[31,15]
package jdk.net does not exist
[ERROR]
/home/oleg/src/apache.org/httpcomponents/httpcore/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java:[334,41]
cannot find symbol
{noformat}
When using the same JDK and targeting Java 11, the same code compiles
successfully
{noformat}
mvn clean compile -P-use-toolchains -DjavaVersion=11
{noformat}
{noformat}
[INFO] --- compiler:3.16.0:compile (default-compile) @ httpcore5 ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 570 source files with javac [debug deprecation release 11] to
target/classes
...
[INFO] Reactor Summary for Apache HttpComponents Core 5.5-beta4-SNAPSHOT:
[INFO]
[INFO] Apache HttpComponents Core ......................... SUCCESS [ 1.089 s]
[INFO] Apache HttpComponents Core HTTP/1.1 ................ SUCCESS [ 9.346 s]
[INFO]
{noformat}
I had to disable release target validation due to this problem when upgrading
our maven POM. Please note the check was not used prior to the upgrade.
Given that the animal sniffer plugin has been discontinued in favor of JDK
release target validation, we have lost a valuable quality control mechanism
and a safe-guard.
The best course of action would be just upgrade to Java 17 and forget about
Java 8 compatibility woes.
Alternatively, we could consider removing direct import of jdk.net classes and
go back to using reflection.
Oleg
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]