解決 Gradle 構建錯誤:Could not get unknown property ‘withoutJclOverSlf4J’

解決 Gradle 構建錯誤:Could not get unknown property ‘withoutJclOverSlf4J’

在構建 Spring 源碼或其他基于 Gradle 的項目時,可能會遇到如下錯誤:

Could not get unknown property 'withoutJclOverSlf4J' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

本文將詳細解析該錯誤的原因,并介紹如何處理此問題。


錯誤解析

該錯誤信息表明,在項目的某個 Gradle 構建腳本中,嘗試使用名為 withoutJclOverSlf4J 的屬性,但 Gradle 在當前依賴處理器(DependencyHandler)中找不到這個屬性。

例如,在某處依賴聲明中可能存在類似下面的代碼:

testCompile("org.apache.tiles:tiles-core:${tiles3Version}", withoutJclOverSlf4J)

這行代碼的意思是,在添加 tiles-core 依賴時,額外傳入一個配置參數 withoutJclOverSlf4J,目的是排除某些傳遞依賴(通常是為了排除日志橋接庫 jcl-over-slf4j)。然而,如果沒有在項目中定義該屬性,就會導致 Gradle 報出“unknown property”的錯誤。


錯誤原因

出現此錯誤的主要原因有以下幾點:

  1. 屬性未定義
    withoutJclOverSlf4J 是一個自定義屬性,通常用于在添加依賴時對傳遞依賴進行排除。但如果在構建腳本中沒有對其進行定義,Gradle 就無法識別這個屬性,進而報錯。
  2. 加載順序問題
    如果該屬性定義在某個配置文件中,但加載順序不對,導致在使用該屬性時尚未定義,也會出現類似問題。
  3. 拼寫或作用域錯誤
    如果屬性名稱拼寫錯誤,或者定義的作用域不正確,也會導致 Gradle 找不到該屬性。

處理方式

1. 定義 withoutJclOverSlf4J 屬性

解決該問題的最直接方法是在項目的根 build.gradle 文件中使用 ext 塊定義該屬性。例如:

ext.withoutJclOverSlf4J = { dependency ->dependency.exclude group: "org.slf4j", module: "jcl-over-slf4j"
}

這樣定義后,在引用該屬性時(例如在 testCompile 聲明中),Gradle 就能夠正確執行閉包,排除 jcl-over-slf4j 模塊。

2. 檢查加載順序

確保上述定義在所有子項目加載之前就已執行。可以將該定義放在根項目的最前面,或者單獨放到一個公共的配置文件中,然后在 settings.gradle 或根 build.gradle 中提前加載。

3. 檢查拼寫和作用域

  • 拼寫:確保在定義時和引用時名稱完全一致(大小寫敏感)。
  • 作用域:如果你在子項目中引用此屬性,請確保該屬性在根項目中定義后,可以在子項目中訪問到。

總結

錯誤 “Could not get unknown property ‘withoutJclOverSlf4J’” 的根本原因在于在依賴聲明中使用了一個未定義的自定義屬性。解決方法如下:

  • 在根 build.gradle 文件中定義 withoutJclOverSlf4J,例如:

    ext.withoutJclOverSlf4J = { dependency ->dependency.exclude group: "org.slf4j", module: "jcl-over-slf4j"
    }
    
  • 確保該屬性定義在所有子項目加載之前。

  • 檢查屬性名稱是否正確且在整個項目中保持一致。

通過以上方法,Gradle 就能正確識別并使用 withoutJclOverSlf4J 屬性,從而避免構建報錯。希望這篇文章對你解決問題有所幫助!


參考資料:

blog.csdn.net

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74968.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mcp 接freecad畫齒輪

from mcp.server.fastmcp import FastMCP import freecad.gears.commands import os from freecad import app from freecad import part mcp FastMCP("Demo")mcp.tool() def create_gear(num_teeth20,height10,double_helix True):"""創建一個漸開線…

【大前端系列19】JavaScript核心:Promise異步編程與async/await實踐

JavaScript核心:Promise異步編程與async/await實踐 系列: 「全棧進化:大前端開發完全指南」系列第19篇 核心: 深入理解Promise機制與async/await語法,掌握現代異步編程技術 📌 引言 在JavaScript的世界中,異步編程是無…

如何排查java程序的宕機和oom?如何解決宕機和oom?

排查oom 用jmap生成我們的堆空間的快照Heap Dump(堆轉儲文件),來分析我們的內存占用 用可視化工具,例如java中的jhat分析Heap Dump文件 ,它分析完會通過一個瀏覽器打開一個可視化頁面展示分析結果 根據oom的類型來調…

什么是 OLAP 數據庫?企業如何選擇適合自己的分析工具

引言:為什么企業需要 OLAP 數據庫? 你是否曾經經歷過這樣的場景: 市場部門急需一份用戶行為分析報告,數據團隊告訴你:“數據太大了,報表要跑 4 個小時”;業務負責人在會議中提出一個臨時性分析…

測試:認識Bug

目錄 一、軟件測試的生命周期 二、bug 一、軟件測試的生命周期 軟件測試貫穿于軟件的生命周期。 需求分析: ???度:軟件需求是否合理 技術?度:技術上是否可?,是否還有優化空間 測試?度:是否存在業務邏輯錯誤、…

綜合實驗2

1、sw1和sw2之間互為備份 [sw1]interface Eth-Trunk 0 (創建聚合接口) [sw1-Eth-Trunk0]trunkport g0/0/1 (將物理接口劃入到聚合接口中) [sw1-Eth-Trunk0]trunkport g0/0/2 [sw2]interface Eth-Trunk 0 [sw2-Eth-T…

【ArcGIS】ArcGIS10.6徹底卸載和ArcGIS10.2安裝全過程

卸載python3后,解決了ArcGIS與python3沖突問題后,軟件可以正常打開使用了 但是還是出現了問題 用ArcGIS 進行空間分析時,中間操作沒有任何報錯和問題,但是就是沒有運行結果 在別人的軟件上操作一遍可以出現運行結果 關閉確有這個,但真的不是我給它的運行時間不夠,反反復復試…

Django之旅:第五節--Mysql數據庫操作(一)

Django開發操作數據庫更簡單,內部提供了ORM框架 一、安裝第三方模塊 pip install mysqlclient注:最新的django框架需要使用mysqlclient模塊,之前pymysql模塊與django框架有編碼兼容問題。 二、ORM 1、ORM可以幫助我們做兩件事:…

docker部署mongodb數據庫

1、下載 MongoDB 鏡像 使用Docker部署MongoDB 之前,我們需要從 Docker Hub 上下載 MongoDB 鏡像。這里我們下載最新版本的 MongoDB 鏡像,使用以下命令進行下載: docker pull mongo:latest 下載完成后,我們就擁有了最新版本的 Mon…

Enhanced PEC-YOLO:電力施工場景安全裝備檢測的輕量化算法解析

目錄 一、核心概述 二、核心創新點 1. ?C2F_Faster_EMA模塊 2. ?SPPF_CPCA多尺度模塊 3. ?BiFPN頸部網絡

【人工智能】解鎖大模型潛力:Ollama 與 DeepSeek 的分布式推理與集群部署實踐

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大語言模型(LLM)的快速發展,其推理能力在自然語言處理、代碼生成等領域展現出巨大潛力。然而,單機部署難以滿足高并發、低延遲的需…

RTMP推流服務器nginx在linux上的編譯部署

RTMP(Real-Time Messaging Protocol)推流確實需要服務器支持?。RTMP推流服務器的主要功能是接收來自推流客戶端的數據流,對其進行處理和轉發。服務器會根據RTMP協議與客戶端建立連接,處理推流數據(如轉碼、錄制等&…

PyQt6實例_批量下載pdf工具_主線程停止線程池

目錄 前置: 代碼: 視頻: 前置: 1 本系列將以 “PyQt6實例_批量下載pdf工具”開頭,放在 【PyQt6實例】 專欄 2 本系列涉及到的PyQt6知識點: 線程池:QThreadPool,QRunnable; 信號與…

Tomcat生產服務器性能優化

試想以下這個情景:你已經開發好了一個程序,這個程序的排版很不錯,而且有著最前沿的功能和其他一些讓你這程序增添不少色彩的元素。可惜的是,程序的性能不怎么地。你也十分清楚,若現在把這款產品退出市場,肯…

正則表達式-筆記

文章目錄 一、正則表達式二、正則表達式的基本語法字符類普通字符非打印字符特殊字符 量詞限定符錨點修飾符(標記) 三、在 Python 中使用正則表達式簡單搜索提取信息替換文本 參考 從驗證用戶輸入,到從大量文本中提取特定信息,再到…

Qwen-0.5b linux部署

參考鏈接 https://blog.csdn.net/imwaters/article/details/145489543 https://modelscope.cn/models/modelscope/ollama-linux 1. ollama安裝 # 安裝ModelScope工具包,用于下載和管理AI模型 pip install modelscope# 下載Ollama的Linux版本安裝包 # --model 指定…

【深度學習】GAN生成對抗網絡:原理、應用與發展

GAN生成對抗網絡:原理、應用與發展 文章目錄 GAN生成對抗網絡:原理、應用與發展1. 引言2. GAN的基本原理2.1 核心思想2.2 數學表達2.3 訓練過程 3. GAN的主要變體3.1 DCGAN (Deep Convolutional GAN)3.2 CGAN (Conditional GAN)3.3 CycleGAN3.4 StyleGAN…

【AI速讀】CNN圖像處理單元的形式化驗證方法

近年來,卷積神經網絡(CNN)在圖像處理和計算機視覺領域取得了巨大成功,如人臉識別、姿態估計等。然而,基于CNN的圖像處理單元設計復雜,驗證工作面臨巨大挑戰。傳統的仿真驗證方法難以覆蓋其龐大的配置空間,且耗時費力。本文將介紹一種創新的形式化驗證(Formal Verificat…

【新人系列】Golang 入門(八):defer 詳解 - 上

? 個人博客:https://blog.csdn.net/Newin2020?typeblog 📝 專欄地址:https://blog.csdn.net/newin2020/category_12898955.html 📣 專欄定位:為 0 基礎剛入門 Golang 的小伙伴提供詳細的講解,也歡迎大佬們…

鴻蒙開發:了解Canvas繪制

前言 本文基于Api13 系統的組件無法滿足我們的需求,這種情況下就不得不自己自定義組件,除了自定義組合組件,拓展組件,還有一種方式,那就是完全的自繪制組件,這種情況,常見的場景有,比…