From 211f129d68470f9998e338cf218157118f444e8c Mon Sep 17 00:00:00 2001 From: Ry Biesemeyer Date: Thu, 16 Apr 2026 17:20:01 +0000 Subject: [PATCH] require java 21, since jruby 10 requires it --- README.md | 4 ++-- logstash-core/lib/logstash/runner.rb | 4 ++-- logstash-core/locales/en.yml | 4 ++-- .../src/main/java/org/logstash/util/JavaVersion.java | 1 - .../main/java/org/logstash/launchers/JavaVersion.java | 8 +++++++- .../java/org/logstash/launchers/JvmOptionsParser.java | 9 +++++---- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9daea3a6551..952060d315f 100644 --- a/README.md +++ b/README.md @@ -43,8 +43,8 @@ Logstash core will continue to exist under this repository and all related issue ### Prerequisites -* Install JDK version 11 or 17. Make sure to set the `JAVA_HOME` environment variable to the path to your JDK installation directory. For example `set JAVA_HOME=` -* Install JRuby 9.2.x It is recommended to use a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv). +* Install JDK version 21. Make sure to set the `JAVA_HOME` environment variable to the path to your JDK installation directory. For example `set JAVA_HOME=` +* Install JRuby 10.0.5.0 It is recommended to use a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv). * Install `rake` and `bundler` tool using `gem install rake` and `gem install bundler` respectively. ### RVM install (optional) diff --git a/logstash-core/lib/logstash/runner.rb b/logstash-core/lib/logstash/runner.rb index b428cb51dea..9c43984bd84 100644 --- a/logstash-core/lib/logstash/runner.rb +++ b/logstash-core/lib/logstash/runner.rb @@ -289,8 +289,8 @@ def execute deprecation_logger.deprecated msg end - if JavaVersion::CURRENT < JavaVersion::JAVA_17 - deprecation_logger.deprecated I18n.t("logstash.runner.java.version_17_minimum", + if JavaVersion::CURRENT < JavaVersion::JAVA_21 + deprecation_logger.deprecated I18n.t("logstash.runner.java.version_21_minimum", :java_home => java.lang.System.getProperty("java.home")) end diff --git a/logstash-core/locales/en.yml b/logstash-core/locales/en.yml index 46602757036..14563bdf7be 100644 --- a/logstash-core/locales/en.yml +++ b/logstash-core/locales/en.yml @@ -352,8 +352,8 @@ en: Running Logstash with the bundled JDK is recommended. The bundled JDK has been verified to work with each specific version of Logstash, and generally provides best performance and reliability. If you have compelling reasons for using your own JDK (organizational-specific compliance requirements, for example), you can configure LS_JAVA_HOME to use that version instead. - version_17_minimum: >- - Starting from Logstash 9.0, the minimum required version of Java is Java 17; + version_21_minimum: >- + Starting from Logstash 9.4, the minimum required version of Java is Java 21; your Java version from `%{java_home}` does not meet this requirement. Running Logstash with the bundled JDK is recommended. The bundled JDK has been verified to work with each specific version of Logstash, and generally provides best performance and reliability. diff --git a/logstash-core/src/main/java/org/logstash/util/JavaVersion.java b/logstash-core/src/main/java/org/logstash/util/JavaVersion.java index 7bf1ac85b5d..0185fae9fcc 100644 --- a/logstash-core/src/main/java/org/logstash/util/JavaVersion.java +++ b/logstash-core/src/main/java/org/logstash/util/JavaVersion.java @@ -30,7 +30,6 @@ public class JavaVersion implements Comparable { public static final JavaVersion CURRENT = parse(System.getProperty("java.specification.version")); - public static final JavaVersion JAVA_17 = parse("17"); public static final JavaVersion JAVA_21 = parse("21"); private final List version; diff --git a/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JavaVersion.java b/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JavaVersion.java index 7aa3f484d23..141a8a5f9ac 100644 --- a/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JavaVersion.java +++ b/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JavaVersion.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * Helper class to compare current version of JVM with a target version. @@ -30,7 +31,7 @@ public class JavaVersion implements Comparable { public static final JavaVersion CURRENT = parse(System.getProperty("java.specification.version")); - public static final JavaVersion JAVA_17 = parse("17"); + public static final JavaVersion JAVA_21 = parse("21"); private final List version; private JavaVersion(List version) { @@ -81,4 +82,9 @@ private static int compare(final JavaVersion leftVersion, final JavaVersion righ public int compareTo(JavaVersion other) { return compare(this, other); } + + @Override + public String toString() { + return version.stream().map(Object::toString).collect(Collectors.joining(".")); + } } \ No newline at end of file diff --git a/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JvmOptionsParser.java b/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JvmOptionsParser.java index bb00a81c6b0..b8197fa5ef7 100644 --- a/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JvmOptionsParser.java +++ b/tools/jvm-options-parser/src/main/java/org/logstash/launchers/JvmOptionsParser.java @@ -116,12 +116,13 @@ public static void main(final String[] args) { } static void bailOnOldJava() { - if (JavaVersion.CURRENT.compareTo(JavaVersion.JAVA_17) < 0) { + if (JavaVersion.CURRENT.compareTo(JavaVersion.JAVA_21) < 0) { final String message = String.format( Locale.ROOT, - "The minimum required Java version is 17; your Java version from [%s] does not meet this requirement", - System.getProperty("java.home") - ); + "The minimum required Java version is 21; your Java version from [%s] is [%s] and does not meet this requirement", + System.getProperty("java.home"), + JavaVersion.CURRENT + ); System.err.println(message); System.exit(1); }