package utils; /** * This little app checks to see what version of JVM is being used. * It does this by checking first the java.vm.version property, and * if that fails, it looks for certain classes that should be present. */ public class CheckVersion { /** * Check for the existence of a class by attempting to load it */ public static boolean checkClass(String c) { try { Class.forName(c); } catch(Exception e) { return false; } return true; } /** * This first checks java.vm.version for 1.1, 1.2 or 1.3. * * It writes jdbc1 to stdout for the 1.1.x VM. * * For 1.2 or 1.3, it checks for the existence of the javax.sql.DataSource * interface, and if found writes enterprise to stdout. If the interface * is not found, it writes jdbc2 to stdout. * * PS: It also looks for the existence of java.lang.Byte which appeared in * JDK1.1.0 incase java.vm.version is not heeded by some JVM's. * * If it can't work it out, it writes huho to stdout. * * The make file uses the written results to determine which rule to run. * * Bugs: This needs thorough testing. */ public static void main(String args[]) { String vmversion = System.getProperty("java.vm.version"); System.out.println("postgresql.jdbc="+System.getProperty("postgresql.jdbc")); // We are running a 1.1 JVM if(vmversion.startsWith("1.1")) { System.out.println("jdbc1"); //System.exit(0); } else // We are running a 1.2 or 1.3 JVM if(vmversion.startsWith("1.2") || vmversion.startsWith("1.3") || checkClass("java.lang.Byte") ) { // Check to see if we have the standard extensions. If so, then // we want the enterprise edition, otherwise the jdbc2 driver. if(checkClass("javax.sql.DataSource")) System.out.println("enterprise"); else System.out.println("jdbc2"); //System.exit(0); } System.setProperty("postgresql.jdbc","yoyo"); } }