001package org.slf4j.impl;
002
003import java.lang.reflect.Method;
004
005import org.slf4j.helpers.Util;
006
007public class VersionUtil {
008        static final int MINIMAL_VERSION = 5;
009
010        static public int getJavaMajorVersion() {
011                String javaVersionString = Util.safeGetSystemProperty("java.version");
012                return getJavaMajorVersion(javaVersionString);
013        }
014
015        static int getJavaMajorVersion(String versionString) {
016                if (versionString == null)
017                        return MINIMAL_VERSION;
018                if (versionString.startsWith("1.")) {
019                        return versionString.charAt(2) - '0';
020                } else {
021                        // we running under Java 9 or later
022                        try {
023                                Method versionMethod = Runtime.class.getMethod("version");
024                                Object versionObj = versionMethod.invoke(null);
025                                Method majorMethod = versionObj.getClass().getMethod("major");
026                                Integer resultInteger = (Integer) majorMethod.invoke(versionObj);
027                                return resultInteger.intValue();
028                        } catch (Exception e) {
029                                return MINIMAL_VERSION;
030                        }
031                }
032        }
033}