java校驗maven下載的jar文件

来源:https://www.cnblogs.com/java_cSharp/archive/2019/05/17/10883604.html
-Advertisement-
Play Games

有時候maven真的很坑! 有時候提示invalid LOC header (bad signat signature), 但又有時候什麼都不提示,工程報錯,情況有肯多中,不知道大家遇到過幾種詭異的. ...


有時候maven真的很坑!

有時候提示invalid LOC header (bad signat signature),

但又有時候什麼都不提示,工程報錯,情況有肯多中,不知道大家遇到過幾種詭異的.

很多人說加-U參數或在maven插件選擇強制刷新等操作,但很不好使,一點用都沒有.

今天我就遇到POM提示第一行錯誤,這怎麼可能?其他任何地方都不報錯,用mvn命令的時候才能看到jar invalid.

我還遇到整個spring的項目只有test報錯,其他的都不報錯,編輯器里提示的Unknown Error~

真沒法玩了~我知道肯定有一個或幾個jar下載的有問題.但就算你知道了難道一個一個去找刪?一個還好說,有時候5,6個真是浪費時間.

不如就寫個代碼跑一下吧~

 

public class MvnCheckJar {

  public static void main(String[] args) throws Exception {
      
    String localMvnPath = "F:/mvnlib";
    // 遍歷文件夾,找出jar\pom和效驗文件進行對比,如果不相符,則刪除
    getFile(new File(localMvnPath), "jar,pom");
    System.out.println("完畢");
  }

  public static void getFile(File path, String suffixs) throws Exception {
    String[] suffixs_ = new String[] {};
    if (suffixs != null) suffixs_ = suffixs.split(",");
    if (path.isFile()) {
      for (String suffix : suffixs_) {
        if (path.getName().endsWith(suffix)) {
//            System.out.println(path.getAbsolutePath() ); 
          handler(path);
        }
      }
    } else {
      File[] ff = path.listFiles();
      if(ff!=null)
      for (File x : ff) {
        getFile(x, suffixs);
      }
    }
  }

  /**
   * 驗證,發現不匹配則刪除
   *
   * @throws IOException
   */
  public static void handler(File f) throws Exception {
    File fsha1 = new File(f.getAbsolutePath() + ".sha1");
    if (fsha1.exists()) {
      String sha1 =
          FileUtils.readFileToString(fsha1, "utf-8").replaceAll("(?m).*(\\w{40}).*", "$1").replaceAll("\\n|\\r", "");
      String currsha1 = sha1(f);
      if(!sha1.equals(currsha1)){//如果不等,則刪除 當前文件和sha1
//          System.out.println("sha1file: " + sha1 ); 
          fsha1.delete();
          f.delete();
      System.out.println(sha1 + " , " + currsha1 + " , " + f.getAbsolutePath());
      
      }

    } else {
      f.delete();
    }
  }

  public static String sha1(File f) throws Exception {
    try (FileInputStream fis = new FileInputStream(f)) {
      return org.apache.commons.codec.digest.DigestUtils.sha1Hex(fis);
    }
  }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 靜態static 如果一個成員變數使用了static關鍵字,那麼這個變數不再屬於對象自己,而是屬於所在的類,多個對象共用同一份數據 靜態static 關鍵字修飾成員變數 靜態static關鍵字修飾成員方法 一旦使用static修飾成員方法,那麼這就成為了靜態方法,靜態方法不屬於對象,而是屬於類的 如 ...
  • 硬體記憶體架構? Java記憶體模型? 記憶體間交互的操作有哪些? 原子性、可見性、有序性? 先行發生原則有哪些? ...
  • hibernate介紹 hibernate是一個開源的輕量級的框架, hibernate框架應用在javaee三層結構中的dao層框架,在dao層對資料庫進行crud操作,使用hibernate框架實現crud操作; hibernate底層就是jdbc,hibernate對jdbc進行了封裝;使用h ...
  • Recently, I was made a service which can provide a simple way to get best model. so, i spent lot of time to read source code of auto-sklearn, auto-skl ...
  • 1、JAVA 語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try 塊中可以拋出異常嗎? 答:Java 通過面向對象的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在Java 中,每個異常都是一個對象,它是Throwa ...
  • 第1題:動態載入又對及時性要求很高怎麼處理? 如何知道一個網站是動態載入的數據? 用火狐或者谷歌瀏覽器 打開你網頁,右鍵查看頁面源代碼,ctrl +F 查詢輸入內容,源代碼裡面並沒有這個值,說明是動態載入數據。 1. Selenium+Phantomjs 2. 儘量不使用 sleep 而使用 Web ...
  • 斐波那契數列、(引用float(‘inf’)無窮大的特性來比對,從而提取數組中的最小值)float(“inf”)正無窮大 float(“-inf”)負無窮大 ...
  • 本隨筆旨在強化理解傳值與傳引用 如下代碼的運行結果 其中i沒有改變,s也沒有改變。 但model中的值均改變了。 i :100s :hellomodel :testchangemodel2 :changeModel i :100s :hellomodel :testchangemodel2 :cha ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...