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}