我的applet在jre1.5以下版本不能正常运行,怎么做个自动检测功能,检测到客户端低于1.5,就自动提示下载

解决方案 »

  1.   

    if(System.getProperty("java.version").compareToIgnoreCase("1.5")<0)
    //提示下载没搞过,不知道以上是否可行
      

  2.   

    上面是调用自己jre的版本应该想办法调用客户端的up 想一想!!
      

  3.   

    在 Windows 中 JRE 的当前版本是一个注册表值,用户可能装有 1.5,但当前版本使用的却是 1.4。
      

  4.   

    //package com.cn-java;import java.lang.System;
    import java.util.Properties;
    import java.util.Hashtable;
    import java.util.Enumeration;public class Test{
            //存放JVM获得的系统属性
            static private Properties _property;  
            
            //Main function
            public static void main(String[] args){
                    getSystemProperty();
                    
                    Hashtable hashKey;
                    hashKey=new Hashtable();
                    //将系统信息的关键字和标题放到hashtable
                    hashKey.put("java.home","Java安装目录");
                    hashKey.put("java.class.path","装载类的路径");
                    hashKey.put("java.specification.version","Java API 规范的版本");
                    hashKey.put("java.specification.vendor","Java API 规范的厂商");
                    hashKey.put("java.specification.name","Java API 规范的名称");
                    hashKey.put("java.version","Java API 实现的版本");
                    hashKey.put("java.vendor","Java API 实现的厂商");
                    hashKey.put("java.vendor.url","Java API 规范厂商的URL");
                    hashKey.put("java.vm.specification.version","Java虚拟机规范的版本");
                    hashKey.put("java.vm.specification.vendor","Java虚拟机规范的厂商");
                    hashKey.put("java.vm.specification.name","Java虚拟机规范的名称");
                    hashKey.put("java.vm.version","Java虚拟机实现的版本");
                    hashKey.put("java.vm.vendor","Java虚拟机实现的厂商");
                    hashKey.put("java.vm.name","Java虚拟机实现的名称");
                    hashKey.put("java.class.version","Java类文件格式的版本");
                    hashKey.put("os.name","主机操作系统的名称");
                    hashKey.put("os.arch","主机操作系统的体系结构");
                    hashKey.put("os.version","主机操作系统的版本");
                    hashKey.put("file.separator", "平台目录的分隔符");
                    hashKey.put("path.separator","平台路径的分隔符");
                    hashKey.put("line.separator","平台文本行的分隔符");
                    hashKey.put("user.name","当前用户的帐户名称");
                    hashKey.put("user.home","当前用户的根目录");
                    hashKey.put("user.dir","当前工作目录");                
                    Enumeration enum;
                    String propertyKey;
                    enum=hashKey.keys();
                    while(enum.hasMoreElements()){
                      propertyKey=(String)enum.nextElement();                        System.out.println((String)hashKey.get(propertyKey)
    +":"+_property.getProperty(propertyKey));
                    }                                                
            }
            /**
            * 获得系统属性列表
            * @return Properties
            */
            static public Properties getSystemProperty(){
                    _property=System.getProperties();
                    return _property;
            }
    }
      

  5.   

    google了一个,呵呵public class GetProps { public static void main(String[] args) {
    String s;
    try {

             s = System.getProperty("java.version", "not specified");
    System.out.println("  The version of the JVM you are running is: " + s);
    } catch (Exception e) {
    System.err.println("Caught exception " + e.toString());
    }
    }
    }
      

  6.   

    System.getProperty在浏览器上是不行的,权限不允许。用脚本取注册表是可以的,但要出现提示框
      

  7.   

    判断是否有JRE1.5以上才有的类就行了
    如:
    try{
      Class clazz = StringBuilder.class;
    }catch(Exception e){
      //JRE1.5以下版本
    }
      

  8.   

    不用这么复杂吧,你不就是applet么,用其现在功能就行了,也就是在你嵌入applet时指定一个就行了吧,例如:<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
            name="preview" id="preview" 
            codebase="<%=pluginURL.toString()%>" 
            width="100%" height="100%">
            ..........
      </object>其中关键就是pluginURL的值,例如:
    http://yourhost:yourport/yourpath/j2re-1_4_2_08-windows-i586-p.exe#Version=1,4,2,08将上面的Version后边的值改为你的目标JRE就可以了。
    这样,如果Client机JRE版本低于这个版,就会到...exe去自动下载及安装,如果高于或等于则不会。
      

  9.   

    提取 java.version 是合理的, 毕竟不管注册表什么内容, 真正运行的是java虚拟机, 而且要考虑到跨平台的可能.
      

  10.   

    读取 java.version 只能在applet初始化以后进行。问题是版本低的时候,applet初始化就不能成功,所以一切操作都进行不了。我考虑只能用js脚本,但要弹出确认警告是一个麻烦!
      

  11.   

    神鸟说的对,别认得方法都是胡扯。如果applet容许你的程序从别的网站下载安装程序,那就惨了。