source: other-projects/trunk/gs3-webservices-democlient/CheckJavaVersion.java@ 15232

Last change on this file since 15232 was 15232, checked in by ak19, 16 years ago

Better comparison between minimum required Java Version and running Java Version. Does numberwise comparison.

  • Property svn:executable set to *
File size: 2.6 KB
Line 
1import java.util.regex.Pattern;
2
3
4public class CheckJavaVersion {
5 static final String MINIMUM_VERSION_PREFIX = "1.4";
6
7 /**
8 * @param args, arg[0] is the minium version of Java required
9 * to run the program. arg[1] is the name of the program.
10 * If arg[1] is left out, then no distinct program name is
11 * mentioned. If arg[0] is left out as well, then Greenstone3's
12 * minimum default version of 1.4.x is assumed.
13 * The program exits with -1 if the Java version being used is
14 * incompatible and with 0 if it is acceptable.
15 */
16 public static void main(String[] args) {
17 String minimumVersion = MINIMUM_VERSION_PREFIX;
18 String programName = "this program";
19 // the version of java that's in use
20 String runningJavaVersion = System.getProperty("java.version");
21
22 if(args.length > 0) {
23 minimumVersion = args[0];
24 }
25 if(args.length > 1) {
26 programName = args[1];
27 }
28
29 System.out.println("\nChecking for a compatible Java version..."
30 + "\nLooking for minimum version: " + minimumVersion);
31
32 // Version numbers can be of the form "1.5.0_2"
33 // We want to split version numbers into the individual numbers
34 // For example: splitting 1.5.0_2 will give us {1,5,0,2},
35 // while splitting 1.5.0_10 will give us {1,5,0,10}.
36 // The comparison then is straightforward.
37
38 // We will split version strings into the individual numbers
39 // using regular expressions. However, the tokens . and _ are
40 // reserved in regular expressions and need to be escaped:
41 // Period: \Q.\E; underscore: \Q_\E.
42 // Once escaped, it should be indicated in the regular expression
43 // that the two characters are separate tokens by using |, so
44 // that the regex becomes: ".|_" -> \Q.\E|\Q_\E.
45 String period = Pattern.quote(".");
46 String underscore = Pattern.quote("_");
47
48 String[] minVersionNums = minimumVersion.split(period+"|"+underscore);
49 String[] runningVersionNums =runningJavaVersion.split(period+"|"+underscore);
50
51 boolean acceptable = true;
52 // only keep looping while we haven't gone past the end of either array
53 for(int i=0; i < minVersionNums.length && i < runningVersionNums.length; i++)
54 {
55 int min = Integer.parseInt(minVersionNums[i]);
56 int run = Integer.parseInt(runningVersionNums[i]);
57 if(run < min) {
58 // fail: running version number is lower than corresponding
59 // minimum version number
60 acceptable = false;
61 break;
62 }
63 }
64
65 if(acceptable) {
66 System.out.println("Found compatible Java version " +runningJavaVersion);
67 System.exit(0); // acceptable case
68 } else {
69 System.out.println("The current Java version " +
70 runningJavaVersion + " is insufficient to run " + programName);
71 System.exit(-1);
72 }
73 }
74}
Note: See TracBrowser for help on using the repository browser.