簡體   English   中英

如何使用適用於 java 的 gradle shadowJar 創建 jar 文件 11

[英]How to create a jar file with gradle shadowJar that works on java 11

I have java version 15 on my PC, and when I create a jar file with gradle using gradle shadowJar , the jar file does not run on my mac which has java version 11.

這是我的項目設置,我已經在 gradle 設置頁面上將版本更改為 java 11。

在此處輸入圖像描述

這是我的mac上的錯誤:

在此處輸入圖像描述

有沒有一種快速的方法來解決這個問題?

我假設您是在命令行上構建而不是通過 IntelliJ。 否則,我不知道出了什么問題。 但即使你不是,你仍然應該配置 Java 兼容性,讓你的構建更加獨立於本地環境。

Gradle 默認使用與運行 Gradle 相同的 JDK 構建。 您可以在命令行上通過gradlew --version驗證哪個版本。 通常你可以使用環境變量JAVA_HOME來設置它。

為了確保您的構建與 Java 11 兼容,無論您使用什么版本運行 Gradle,您都有一些選擇。

首先,您可以指定一個工具鏈。 如果您還沒有使用 JDK,這將使 Gradle 自動下載兼容版本的 JDK。 僅自 Gradle 6.7 起可用。

// Groovy DSL. Gradle 6.7+
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

您還可以指定發布標志。 這將指示當前的 JDK,即使您使用 Java 15 運行,以使構建與早期版本兼容。 僅從 Gradle 版本 6.6 起可用。

// Groovy DSL. Gradle 6.6+
compileJava {
    options.release = 11
}

最后,如果您使用的是舊版本的 Gradle,您可以指定源和目標兼容性。 這不如以前的選項好,因為它不能確保您僅使用 Java 11 兼容 API - 只有字節碼將與 Java 11 兼容。

// Groovy DSL. Any version of Gradle (but not as safe)
compileJava {
    sourceCompatibility = 11
    targetCompatibility = 11
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM