diff --git a/core/trino-server-main/pom.xml b/core/trino-server-main/pom.xml index 6d9d3fa9a3e1..04617fe3b7fb 100644 --- a/core/trino-server-main/pom.xml +++ b/core/trino-server-main/pom.xml @@ -48,4 +48,23 @@ test + + + + + true + src/main/resources + + io/trino/server/build.properties + + + + false + src/main/resources + + io/trino/server/build.properties + + + + diff --git a/core/trino-server-main/src/main/java/io/trino/server/TrinoServer.java b/core/trino-server-main/src/main/java/io/trino/server/TrinoServer.java index 6c13a4f25c2e..2fe8558b4aef 100644 --- a/core/trino-server-main/src/main/java/io/trino/server/TrinoServer.java +++ b/core/trino-server-main/src/main/java/io/trino/server/TrinoServer.java @@ -13,6 +13,11 @@ */ package io.trino.server; +import com.google.common.io.Resources; + +import java.io.InputStream; +import java.util.Properties; + import static com.google.common.base.MoreObjects.firstNonNull; public final class TrinoServer @@ -22,12 +27,25 @@ private TrinoServer() {} public static void main(String[] args) { Runtime.Version javaVersion = Runtime.version(); - if (javaVersion.feature() < 22) { - System.err.printf("ERROR: Trino requires Java 22+ (found %s)%n", javaVersion); + int requiredVersion = requiredJavaVersion(); + if (javaVersion.feature() < requiredVersion) { + System.err.printf("ERROR: Trino requires Java %d+ (found %s)%n", requiredVersion, javaVersion); System.exit(100); } String trinoVersion = TrinoServer.class.getPackage().getImplementationVersion(); new Server().start(firstNonNull(trinoVersion, "unknown")); } + + private static int requiredJavaVersion() + { + Properties properties = new Properties(); + try (InputStream inputStream = Resources.getResource("io/trino/server/build.properties").openStream()) { + properties.load(inputStream); + return Integer.parseInt(properties.getProperty("target.jdk")); + } + catch (Exception e) { + throw new RuntimeException("Failed to load required Java version from properties file", e); + } + } } diff --git a/core/trino-server-main/src/main/resources/io/trino/server/build.properties b/core/trino-server-main/src/main/resources/io/trino/server/build.properties new file mode 100644 index 000000000000..b9db04578580 --- /dev/null +++ b/core/trino-server-main/src/main/resources/io/trino/server/build.properties @@ -0,0 +1 @@ +target.jdk=${project.build.targetJdk}