1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.util;
15
16
17
18
19 public class EnvUtil {
20
21 private EnvUtil() {
22 }
23
24
25
26
27
28
29
30
31
32 static public String logbackVersion() {
33 Package pkg = EnvUtil.class.getPackage();
34 if(pkg == null) {
35 return null;
36 }
37 return pkg.getImplementationVersion();
38 }
39
40 static public int getJDKVersion(String javaVersionStr) {
41 int version = 0;
42
43 for (char ch : javaVersionStr.toCharArray()) {
44 if (Character.isDigit(ch)) {
45 version = (version * 10) + (ch - 48);
46 } else if (version == 1) {
47 version = 0;
48 } else {
49 break;
50 }
51 }
52 return version;
53 }
54
55 static private boolean isJDK_N_OrHigher(int n) {
56 String javaVersionStr = System.getProperty("java.version", "");
57 if (javaVersionStr.isEmpty())
58 return false;
59
60 int version = getJDKVersion(javaVersionStr);
61 return version > 0 && n <= version;
62 }
63
64 static public boolean isJDK5() {
65 return isJDK_N_OrHigher(5);
66 }
67
68 static public boolean isJDK6OrHigher() {
69 return isJDK_N_OrHigher(6);
70 }
71
72 static public boolean isJDK7OrHigher() {
73 return isJDK_N_OrHigher(7);
74 }
75
76 static public boolean isJDK16OrHigher() {
77 return isJDK_N_OrHigher(16);
78 }
79
80 static public boolean isJDK18OrHigher() {
81 return isJDK_N_OrHigher(18);
82 }
83
84 static public boolean isJaninoAvailable() {
85 ClassLoader classLoader = EnvUtil.class.getClassLoader();
86 try {
87 Class<?> bindingClass = classLoader.loadClass("org.codehaus.janino.ScriptEvaluator");
88 return (bindingClass != null);
89 } catch (ClassNotFoundException e) {
90 return false;
91 }
92 }
93
94 public static boolean isWindows() {
95 String os = System.getProperty("os.name");
96 return os.startsWith("Windows");
97 }
98
99 static public boolean isClassAvailable(Class callerClass, String className) {
100 ClassLoader classLoader = Loader.getClassLoaderOfClass(callerClass);
101 try {
102 Class<?> bindingClass = classLoader.loadClass(className);
103 return (bindingClass != null);
104 } catch (ClassNotFoundException e) {
105 return false;
106 }
107 }
108
109 }