国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用代碼判斷當前系統(tǒng)是否支持某個版本的feature

bang590 / 2647人閱讀

摘要:已經(jīng)出來有一段時間了,因此很多流行的應(yīng)用紛紛增添了對乃至的支持,比如。來自,這個類正是引入的。因此如果用加載不到這個類,一定說明當前的運行環(huán)境是以下。通過這種方式進行運行環(huán)境的檢測比準確,因為后者獲取的信息理論上有可能被別人用覆蓋。

JDK9已經(jīng)出來有一段時間了,因此很多流行的Java應(yīng)用紛紛增添了對JDK9乃至JDK10的支持,比如Tomcat。

我們通過這個鏈接下載最新的Tomcat源文件包,總共7MB:

https://tomcat.apache.org/dow...

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

可以看到大量調(diào)用工具類JreCompat檢測JRE9是否可用:

JreCompat.isJre9Available()

查看isJre9Available的具體實現(xiàn):

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;

}

一旦inaccessibleObjectExceptionClazz不為null,說明JRE9可用。

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

java.lang.reflect.InaccessibleObjectException這個類正是Java 9引入的。因此如果用Class loader加載不到這個類,一定說明當前的運行環(huán)境是Java 9以下。

通過這種方式進行Java運行環(huán)境的檢測比System.getProperty準確,因為后者獲取的信息理論上有可能被別人用setProperty覆蓋。

ABAP

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

要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71932.html

相關(guān)文章

  • 淺聊Python class中@staticmethod以及@classmethod

    摘要:然而,作為學(xué)生代表的我,絕對不允許老師混入進來充當間諜。而且,該方法由所獨享,并不需要判斷是否為學(xué)生。由此,改進為以下版本。得到如下測試代碼而對于教學(xué)分類的判斷,則有以下兩種情形。 前言 入學(xué)不久之后,我就在想,對于學(xué)校的這么多人,這么多教師,這么多學(xué)生,以及其他種種事物,能否對應(yīng)的做一套系統(tǒng)下來呢?隨之也跟著思考了起來。 設(shè)計 好了,最直觀的映入大腦的就是三個實體:人、教師、學(xué)生。這...

    baoxl 評論0 收藏0
  • 【騰訊bugly干貨】關(guān)于 Android N 那些你不知道事兒

    今年3月,Google 破天荒提前半年發(fā)布了 Android N 開發(fā)者預(yù)覽版。當然,作為一個不合格的谷粉并沒有第一時間體驗安裝,因為至今仍然能夠回憶起來去年今日此門中(霧)興沖沖刷了 Android M Preview 的時候發(fā)現(xiàn)各種 Crash 就連微信也(不出所料得)中招時自己一臉懵逼的心情。當然,為自己的機智而慶幸并沒有過多久,很快就有微信好友(當然也是純純的谷粉)反饋微信又雙叒叕在 An...

    zombieda 評論0 收藏0
  • Kubernetes如何加速UCloud內(nèi)部代碼部署CI/CD流程

    摘要:內(nèi)部長期使用來管理代碼。審核通過并且成功后,觸發(fā)靜態(tài)測試單元測試鏡像構(gòu)建鏡像部署集成測試等測試通過后,創(chuàng)建一個從到的,由負責人進行審核。從圖中我們可以看到,部分是一個單元測試,預(yù)發(fā)布部署,集成測試,,提交代碼的循環(huán)過程。UCloud內(nèi)部長期使用 Gitlab 來管理代碼。雖然Gitlab作為一套開源平臺已很優(yōu)秀,但我們對于其能為CI/CD提供的敏捷性并不十分滿意,內(nèi)部實踐中的代碼發(fā)布周期仍需...

    gougoujiang 評論0 收藏0
  • 如何設(shè)計npm包開發(fā)和發(fā)布流程

    摘要:所以此版本號在這里的作用并不是用來區(qū)分版本的,小版本號才是真正用來做版本區(qū)分的,那么在引用這個就要這么來控制版本號,舉個栗子鎖定大版本號和小版本號,不管我們開發(fā)過程中提交了多少次,我們引用都是最新的。 最近在把公司內(nèi)部用的一個庫發(fā)布到內(nèi)網(wǎng)的npm私服上,僅僅是發(fā)布的話是比較簡單的,但這個庫是由多個人一起維護的,而且npm私服只有一套,所以生產(chǎn)環(huán)境和開發(fā)環(huán)境,用的是同一個,那么,我們的需...

    qieangel2013 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<