色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Gradle中的版本使用

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-09-25 15:32 ? 次閱讀

今天帶大家了解一下 Gradle 中 sourceCompatiblity 和 targetCompatibility 的使用配置和區別。如果有對 Gradle 不太了解的朋友可以看我們之前的一些文章。

Java 中的版本處理

在了解 Gradle 中的 sourceCompatiblity 和 targetCompatibility 之前, 我們先來看看 Java 在編譯的時候,是怎么處理版本號的。

當我們使用javac編譯一個Java程序時,我們可以為版本處理提供以下兩個關閉版本的編譯選項。

  • -source 指的是我們的 Java 代碼的語言版本和編譯的 JDK 相匹配(例如,1.8代表JDK8)。我們所提供的版本值將限制源代碼中使用的語言特性,使其符合各自的Java版本。
  • -target 指的是控制生成的類文件的版本。也就是說我們提供的版本值將是我們的程序可以運行的最低Java版本。

舉個例子

javac HelloWorld.java -source 1.6 -target 1.8

上面的命令的意思就是 程序的運行環境需要支持JDK 1.8 也就是 Java 8, 而源碼中不能包含 Java 6 以上版本的語言特性,比如說 Lambda 表達式等等。

Gradle 中的版本使用

Gradle 中需要依賴Java插件,然后通過一個叫 java 的 task 來配置 sourceCompatibility 和 targetCompatibility 屬性,也就是 javac 中的 -source-target 編譯選項。

讓我們來設置build.gradle文件

plugins {
    id 'java'
}

group 'cn.javanorth'

java {
    sourceCompatibility = "1.6"
    targetCompatibility = "1.8"
}

通過一個例子來驗證一下

我們創建一個叫 HelloWorld 的控制臺程序來進行測試,創建一個 HelloWorldApp 的 class。

public class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

好,我們使用 gradle build 命令來編譯下,我們可以看到生成了一個 HelloWorldApp.class 的文件。

我們通過使用 javap 命令行工具來檢查這個class 的字節碼版本號。

javap -verbose HelloWorldApp.class

輸出結果如下:

public class cn.javanorth.helloworld.HelloWorldApp
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER

這里的主版本號是52,也就是 Java 8 class 文件的版本號。這就意味著 HelloWorldApp.class 只能運行在 JDK 1.8 以上版本。

再來測試一下 sourceCompatibility, 我修改一下代碼,增加一個 Java 6 沒有的特性,比如說 Lambda 表達式。

public class HelloWorldApp {

    public static void main(String[] args) {
        Runnable helloLambda = () - > {
            System.out.println("Hello World!");
        }
        helloLambda.run();
    }
}

我們嘗試使用 gradle 進行編譯, 可以看到有一個編譯錯誤。

error: lambda expressions are not supported in -source 1.6

-source選項相當于Gradle 配置中 sourceCompatibility,可以讓我們的代碼在編譯過程中提前發現問題,如果我們不想引入更高的版本特性,使用這個選項可以確保我們不會誤用這些特性。比如說我們可能希望我們的應用程序也能在Java 6 runtime 上運行。

總結

在這篇文章中,我們了解如何使用 -source-target 編譯選項來處理我們的Java源代碼和目標運行時的版本。我們還可以通過Gradle 的 sourceCompatbility 和 targetCompatibility 配置使用這些編譯選項。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2966

    瀏覽量

    104702
  • 源碼
    +關注

    關注

    8

    文章

    639

    瀏覽量

    29185
  • 編譯
    +關注

    關注

    0

    文章

    657

    瀏覽量

    32852
  • gradle
    +關注

    關注

    0

    文章

    26

    瀏覽量

    708
收藏 人收藏

    評論

    相關推薦

    Gradle版本目錄功能的簡單應用

    。 0. 概述 Gradle 版本目錄是 Gradle7 引入的新功能。使用 Gradle 版本
    的頭像 發表于 09-30 11:12 ?1352次閱讀

    Gradle構建的多模塊Spring Boot項目

    0. 前言 相比起 Maven 的 XML 配置方式,Gradle 提供了一套簡明的 DSL 用于構建Java 項目,使我們就像編寫程序一樣編寫項目構建腳本。 本文將從無到有創建一個用 Gradle
    的頭像 發表于 09-25 14:46 ?2942次閱讀
    <b class='flag-5'>Gradle</b>構建的多模塊Spring Boot項目

    gradle安裝與配置unity

    ://gradle.org/install/)并下載適用于你的操作系統的最新版本Gradle。根據你的操作系統,選擇相應的發行版并根據指示進行
    的頭像 發表于 12-07 14:48 ?2136次閱讀

    Android Studio與Gradle深入

    ://jcenter.bintray.com/" }  下載不到特定的版本  Maven 和 Gradle 都會有一個緩存庫,默認安裝的情況下,是在用戶根目錄下的 .m2 或者 .gradle 文件夾
    發表于 08-31 17:58

    Gradle for Android

    Gradle for Android
    發表于 07-16 15:50

    HarmonyOS初步探索04:使用DevEco Studio時設置Gradle倉庫代替

    /huawei-gradlebuild/”} } 依賴項{ // gradle-intellij-plugin用于構建JetBrains插件//請確保始終升級到最新版本// http
    發表于 12-15 14:26

    DevEco報錯不能順利進入gradle8.0怎么解決?

    報錯內容為:此版本中使用了已棄用的 Gradle 功能,使其與 Gradle 8.0 不兼容。翻譯一下,大概有些人說這個中外使用了Gradle的特性,但它應該與
    發表于 04-21 11:15

    谷歌 Android Studio 和 Gradle 插件使用全新版本編號

    在 Canary 通道已正式發布。在此版本,調整了 Android Studio 和 Gradle 插件的版本編號方案。此項變更將 Gradle
    的頭像 發表于 12-11 10:49 ?1620次閱讀

    gradle和gradlew的區別?

    你會注意到輸出里打印了 Gradle版本,它對應著你運行的 gradle 命令在設備Gradle 安裝包
    的頭像 發表于 12-13 09:57 ?1627次閱讀

    Gradle入門知識之Gradle詳解

    大家回想一下自己第一次接觸`Gradle`是什么時候? 相信大家也都是和我一樣,在我們打開第一個AS項目的時候, 發現有很多帶gradle字樣的文件:`setting.gradle, build.
    的頭像 發表于 03-30 10:47 ?2524次閱讀
    <b class='flag-5'>Gradle</b>入門知識之<b class='flag-5'>Gradle</b>詳解

    Gradle入門知識之Gradle詳解(下)

    大家回想一下自己第一次接觸`Gradle`是什么時候? 相信大家也都是和我一樣,在我們打開第一個AS項目的時候, 發現有很多帶gradle字樣的文件:`setting.gradle, build.
    的頭像 發表于 03-30 10:51 ?855次閱讀
    <b class='flag-5'>Gradle</b>入門知識之<b class='flag-5'>Gradle</b>詳解(下)

    Gradle入門知識之Gradle語法1

    很多開發喜歡把`Gradle`簡單定義為一種構建工具,和`ant,maven`等作用類似, 誠然Gradle確實是用來做構建,但是如果簡單得把Gradle拿來做構建,就太小看Gradle
    的頭像 發表于 03-30 10:54 ?995次閱讀
    <b class='flag-5'>Gradle</b>入門知識之<b class='flag-5'>Gradle</b>語法1

    Gradle入門知識之Gradle語法2

    很多開發喜歡把`Gradle`簡單定義為一種構建工具,和`ant,maven`等作用類似, 誠然Gradle確實是用來做構建,但是如果簡單得把Gradle拿來做構建,就太小看Gradle
    的頭像 發表于 03-30 10:54 ?728次閱讀

    Gradle Plugin和AGP的區別1

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:48 ?1210次閱讀
    <b class='flag-5'>Gradle</b> Plugin和AGP的區別1

    Gradle Plugin和AGP的區別3

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:50 ?1250次閱讀
    主站蜘蛛池模板: 精品国产三级a| 性生生活大片又黄又| 真实国产乱子伦精品一区二区三区| 国产精品久久久久久人妻精品流| 欧美色图天堂网| 99精品视频在线观看免费播放| 久久五月综合婷婷中文云霸高清| 亚洲久热无码中文字幕| 国产亚洲精品久久77777| 双性精跪趴灌满h室友4p| 成人在线免费视频观看| 欧洲video60| porono日本xxx| 欧美AAAA片免费播放观看| 91在线一区二区| 免费99精品国产自在现线| 最近中文字幕2019免费版日本| 久久久大香菇| 羽月希被黑人吃奶dasd585| 久久黄色免费| 在线免费观看毛片| 久久亚洲伊人| 2017天天拍天天拍香蕉视频| 老司机福利在视频在ae8| 2021国产精品视频| 蜜桃人妻无码AV天堂三区 | 男女啪啪久久精品亚洲A| 18亚洲男同gay1069| 美女漏bb| gayxxxxgay呻吟受日本| 琪琪色原网站ying| 动漫护士被乳羞羞漫| 色欲AV无码乱码精品国产| 国产成人在线视频免费观看| 无码乱人伦一区二区亚洲一| 国产色婷亚洲99精品AV| 亚洲免费一区二区| 久久精品国产亚洲AV麻豆欧美玲| 80岁色老头69av| 日本无码人妻精品一区二区视频| 国产精品久久人妻互换毛片|