成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

bang590 / 2648人閱讀

摘要:已經(jīng)出來(lái)有一段時(shí)間了,因此很多流行的應(yīng)用紛紛增添了對(duì)乃至的支持,比如。來(lái)自,這個(gè)類正是引入的。因此如果用加載不到這個(gè)類,一定說(shuō)明當(dāng)前的運(yùn)行環(huán)境是以下。通過(guò)這種方式進(jìn)行運(yùn)行環(huán)境的檢測(cè)比準(zhǔn)確,因?yàn)楹笳攉@取的信息理論上有可能被別人用覆蓋。

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

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

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

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

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

JreCompat.isJre9Available()

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

public static boolean isJre9Available() {

     return jre9Available;

}

被一個(gè)boolean控制:jre9Available。

jre9Available這個(gè)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,說(shuō)明JRE9可用。

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

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

通過(guò)這種方式進(jìn)行Java運(yùn)行環(huán)境的檢測(cè)比System.getProperty準(zhǔn)確,因?yàn)楹笳攉@取的信息理論上有可能被別人用setProperty覆蓋。

ABAP

通過(guò)表CVERS查看Software component的版本信息:

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71932.html

相關(guān)文章

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

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

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

    今年3月,Google 破天荒提前半年發(fā)布了 Android N 開發(fā)者預(yù)覽版。當(dāng)然,作為一個(gè)不合格的谷粉并沒有第一時(shí)間體驗(yàn)安裝,因?yàn)橹两袢匀荒軌蚧貞浧饋?lái)去年今日此門中(霧)興沖沖刷了 Android M Preview 的時(shí)候發(fā)現(xiàn)各種 Crash 就連微信也(不出所料得)中招時(shí)自己一臉懵逼的心情。當(dāng)然,為自己的機(jī)智而慶幸并沒有過(guò)多久,很快就有微信好友(當(dāng)然也是純純的谷粉)反饋微信又雙叒叕在 An...

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

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

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

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

    qieangel2013 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<