blob: e46b3401d36ed70ed4cb810f9ecee231af4fff40 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.common.util;
import org.apache.doris.common.Config;
import org.apache.doris.common.Version;
import com.google.common.annotations.VisibleForTesting;
public class JdkUtils {
/*
* Doris will check if the compiled and running versions of Java are compatible.
* The principle the java version at runtime should higher than or equal to the
* java version at compile time
*/
@VisibleForTesting
public static boolean checkJavaVersion() {
if (!Config.check_java_version) {
return true;
}
String javaCompileVersionStr = getJavaVersionFromFullVersion(Version.DORIS_JAVA_COMPILE_VERSION);
String javaRuntimeVersionStr = System.getProperty("java.version");
int compileVersion = JdkUtils.getJavaVersionAsInteger(javaCompileVersionStr);
int runtimeVersion = JdkUtils.getJavaVersionAsInteger(javaRuntimeVersionStr);
if (runtimeVersion < compileVersion) {
System.out.println("The runtime java version " + javaRuntimeVersionStr + " is less than "
+ "compile version " + javaCompileVersionStr);
return false;
}
return true;
}
/*
* Input: openjdk full 'version "13.0.1+9"', 'java full version "1.8.0_131-b11"'
* Output: '13.0.1+9', '1.8.0_131-b11'
*/
public static String getJavaVersionFromFullVersion(String fullVersionStr) {
int begin = fullVersionStr.indexOf("\"");
int end = fullVersionStr.lastIndexOf("\"");
String versionStr = fullVersionStr.substring(begin + 1, end);
return versionStr;
}
/*
* Input: '13.0.1+9', '1.8.0_131-b11'
* Output: 13, 8
*/
public static int getJavaVersionAsInteger(String javaVersionStr) {
String[] parts = javaVersionStr.split("\\.");
if (parts[0].equals("1")) {
return Integer.valueOf(parts[1]);
} else {
return Integer.valueOf(parts[0]);
}
}
}