首页
登录 | 注册

如何通过Java代码判断当前的环境是否支持JRE 9

JDK9已经出来有一段时间了,因此很多流行的Java应用纷纷增添了对JDK9乃至JDK10的支持,比如Tomcat。

我们通过这个链接下载最新的Tomcat源文件包,总共7MB:

https://tomcat.apache.org/download-90.cgi

解压之后,在文件夹apache-tomcat-9.0.10-srcjavaorgapachecatalinacore里找到文件JreMemoryLeakPreventionListener.java:

可以看到大量调用工具类JreCompat检测JRE9是否可用:

JreCompat.isJre9Available()

查看isJre9Available的具体实现:

public static boolean isJre9Available() { return jre9Available;

} 

被一个boolean控制:jre9Available。

jre9Available这个boolean被Jre9Compat.isSupported()控制:

static { // This is Tomcat 9 with a minimum Java version of Java 8. // Look for the highest supported JVM first if (Jre9Compat.isSupported()) {

       instance = new Jre9Compat();

       jre9Available = true;

} else {

     instance = new JreCompat();

     jre9Available = false;

}

} 

再看Jre9Compat.isSupported()的代码:

static boolean isSupported() { return inaccessibleObjectExceptionClazz != null;

} 
如何通过Java代码判断当前的环境是否支持JRE 9

一旦inaccessibleObjectExceptionClazz不为null,说明JRE9可用。

inaccessibleObjectExceptionClazz来自Class.forName("java.lang.reflect.InaccessibleObjectException"),

java.lang.reflect.InaccessibleObjectException这个类正是Java 9引入的。因此如果用Class loader加载不到这个类,一定说明当前的运行环境是Java 9以下。

通过这种方式进行Java运行环境的检测比System.getProperty准确,因为后者获取的信息理论上有可能被别人用setProperty覆盖。

ABAP

通过表CVERS查看Software component的版本信息:

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:



相关文章

  • MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据
    MongoDB最简单的入门教程之一 环境搭建 MongoDB最简单的入门教程之二 使用nodejs访问MongoDB org.mongodb mongodb-driver 3.6.4 bson mongodb-driver mongodb- ...
  • 助您写出优雅的Java代码七点建议
    在每一位刚入行的程序员的心中,编写程序都是一门神圣的艺术创作.他们无不希望自己的代码作品既简洁清晰,又可读性强,而且还具有一定的容错能力.本文将为您带来七点建议和技巧,以帮助您编写出简洁.干练的Java代码.其中的有些可能会让你觉得有些不可 ...
  • 在android上,如果你直接用dalivik去加载framework.jar,你会发现里面的大部分native方法无法使用.同时,在/init.rc里面,你也找不到dalvikvm.在ps列表,也没有dalvikvm.那android是怎 ...
  • java代码调用weka包实现数据库连接(Oracle_和_MySQL)
    java代码调用weka包实现数据库连接(Oracle_和_MySQL) java代码调用weka包实现数据库连接(Oracle_和_MySQL).rar
  • [IT168技术]代码审查是消灭Bug最重要的方法之一,这些审查在大多数时候都特别奏效.由于代码审查本身所针对的对象,就是俯瞰整个代码在测试过程中的问题和Bug.并且,代码审查对消除一些特别细节的错误大有裨益,尤其是那些能够容易在阅读代码的 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.014 s.
京ICP备10005923号