⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 versioncheck.java

📁 java base64
💻 JAVA
字号:
/*
VersionCheck: Check that Java version is sufficiently recent

copyright (c) 1997-2008 Roedy Green, Canadian Mind Products
may be copied and used freely for any purpose but military.
Roedy Green
Canadian Mind Products
#101 - 2536 Wark Street
Victoria, BC Canada
V8T 4G8
tel: (250) 361-9093
roedy g at mindprod dotcom
http://mindprod.com

version history

version 1.7 2006-03-04 reformat with IntelliJ, provide Javadoc

version 1.5 2005-07-14 split off from Misc, allow for compilation with old compiler.

version 1.4 2002-08-17, add quoteSQL

version 1.3 1999-08-24, add leftPad, rightPad, smarter rep.
 isJavaVersionOK now handles 1.3beta.

version 1.2 1998-12  14, add isJavaVersionOK

version 1.1 1998-11-10, add dates

version 1.0 1997-03-23, initial.

*/
package com.mindprod.common11;

import java.awt.Color;
import java.awt.Container;
import java.awt.TextArea;

/**
 * Check that Java version is sufficiently recent
 *
 * @author Roedy Green, Canadian Mind Products
 * @version 1.7, 2006-03-04
 */
public final class VersionCheck
    {
    // ------------------------------ FIELDS ------------------------------

    /**
     * true if you want extra debugging output and test code
     */
    static final boolean DEBUGGING = false;
    // -------------------------- PUBLIC STATIC METHODS --------------------------


    /**
     * Ensures Java runtime version e.g. 1.1.7 is sufficiently recent. Based on code by Dr. Tony Dahlman
     * <adahlman@jps.net>
     *
     * @param wantedMajor  java major version e.g. 1
     * @param wantedMinor  Java minor version e.g. 1
     * @param wantedBugFix Java bugfix version e.g. 7
     * @return true if JVM version running is equal to or more recent than (higher than) the level specified.
     */
    public static boolean isJavaVersionOK( int wantedMajor,
                                           int wantedMinor,
                                           int wantedBugFix )
        {
        try
            {
            try
                {
                // java.version will have form 1.1.7A, 11, 1.1., 1.1, 1.3beta,
                // 1.4.2_05 or 1.4.1-rc
                // It may be gibberish. It may be undefined.
                // We have do deal with all this malformed garbage.
                // Because incompetents run the world,
                // it is not nicely formatted for us in three fields.
                String ver = System.getProperty( "java.version" );

                if ( ver == null )
                    {
                    return false;
                    }

                ver = ver.trim();

                if ( ver.length() < 2 )
                    {
                    return false;
                    }

                int dex = ver.indexOf( '.' );

                if ( dex < 0 )
                    {
                    // provide missing dot
                    ver = ver.charAt( 0 ) + '.' + ver.substring( 1 );
                    dex = 1;
                    }

                int gotMajor = Integer.parseInt( ver.substring( 0, dex ) );
                if ( DEBUGGING )
                    {
                    System.out.println( "major:" + gotMajor );
                    }
                if ( gotMajor < wantedMajor )
                    {
                    return false;
                    }
                if ( gotMajor > wantedMajor )
                    {
                    return true;
                    }

                // chop off major and first dot.
                ver = ver.substring( dex + 1 );

                // chop trailing "beta"
                if ( ver.endsWith( "beta" ) )
                    {
                    ver = ver.substring( 0, ver.length() - "beta".length() );
                    }
                // chop trailing "-rc"
                if ( ver.endsWith( "-rc" ) )
                    {
                    ver = ver.substring( 0, ver.length() - "-rc".length() );
                    }
                // chop any trailing _nn
                dex = ver.lastIndexOf( '_' );
                if ( dex >= 0 )
                    {
                    ver = ver.substring( 0, dex );
                    }
                // chop any trailing letter as in 1.1.7A,
                // but convert 1.1.x or 1.1.X to 1.1.9
                char ch = ver.charAt( ver.length() - 1 );
                if ( !Character.isDigit( ch ) )
                    {
                    ver = ver.substring( 0, ver.length() - 1 );
                    if ( ch == 'x' || ch == 'X' )
                        {
                        ver += '9';
                        }
                    }
                // check minor version
                dex = ver.indexOf( '.' );
                if ( dex < 0 )
                    {
                    // provide missing BugFix number as in 1.2 or 1.0
                    ver += ".0";
                    dex = ver.indexOf( '.' );
                    }

                int gotMinor = Integer.parseInt( ver.substring( 0, dex ) );
                if ( DEBUGGING )
                    {
                    System.out.println( "minor:" + gotMinor );
                    }
                if ( gotMinor < wantedMinor )
                    {
                    return false;
                    }
                if ( gotMinor > wantedMinor )
                    {
                    return true;
                    }
                // was equal, need to examine third field.
                // check bugfix version
                ver = ver.substring( dex + 1 );
                int gotBugFix = Integer.parseInt( ver );
                if ( DEBUGGING )
                    {
                    System.out.println( "bugFix:" + gotBugFix );
                    }
                return ( gotBugFix >= wantedBugFix );
                }
            catch ( NumberFormatException e )
                {
                if ( DEBUGGING )
                    {
                    System.out.println( "number format" + e.getMessage() );
                    }
                return false;
                }// end catch
            }
        catch ( StringIndexOutOfBoundsException e )
            {
            if ( DEBUGGING )
                {
                System.out.println( "out of bounds:" + e.getMessage() );
                }

            return false;
            }// end catch
        }// end isJavaVersionOK

    /**
     * use in a paint routine if Java version is not ok, usually tested statically.
     *
     * @param wantedMajor  java major version e.g. 1
     * @param wantedMinor  Java minor version e.g. 1
     * @param wantedBugFix Java bugfix version e.g. 7
     * @param container    container to add an error message component.
     * @return true if version is ok
     */
    public static boolean isJavaVersionOK( int wantedMajor,
                                           int wantedMinor,
                                           int wantedBugFix,
                                           Container container )
        {
        if ( isJavaVersionOK( wantedMajor, wantedMinor, wantedBugFix ) )
            {
            return true;
            }
        else
            {
            String error =
                    "Error: You need Java "
                    + wantedMajor
                    + "."
                    + wantedMinor
                    + "."
                    + wantedBugFix
                    + " or later to run this Applet.\n"
                    + "You are currently running under Java "
                    + System.getProperty( "java.version" )
                    + ".\n"
                    + "Get the latest Java from http://java.com/en/index.jsp";
            TextArea complain =
                    new TextArea( error, 3, 42, TextArea.SCROLLBARS_NONE );

            complain.setEditable( false );
            complain.setBackground( Color.white );
            complain.setForeground( Color.red );
            complain.setSize( 300, 50 );
            container.setLayout( null );
            container.add( complain );
            System.err.println( error );
            return false;
            }
        }

    // --------------------------- CONSTRUCTORS ---------------------------

    /**
     * VersionCheck contains only static methods.
     */
    private VersionCheck()
        {

        }
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -