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}