有时候maven真的很坑!

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

但又有时候什么都不提示,工程报错,情况有肯多中,不知道大家遇到过几种诡异的.

很多人说加-U参数或在maven插件选择强制刷新等操作,但很不好使,一点用都没有.

今天我就遇到POM提示第一行错误,这怎么可能?其他任何地方都不报错,用mvn命令的时候才能看到jar invalid.

我还遇到整个spring的项目只有test报错,其他的都不报错,编辑器里提示的Unknown Error~

真没法玩了~我知道肯定有一个或几个jar下载的有问题.但就算你知道了难道一个一个去找删?一个还好说,有时候5,6个真是浪费时间.

不如就写个代码跑一下吧~

  1. public class MvnCheckJar {
  2.  
  3. public static void main(String[] args) throws Exception {
  4.  
  5. String localMvnPath = "F:/mvnlib";
  6. // 遍历文件夹,找出jar\pom和效验文件进行对比,如果不相符,则删除
  7. getFile(new File(localMvnPath), "jar,pom");
  8. System.out.println("完毕");
  9. }
  10.  
  11. public static void getFile(File path, String suffixs) throws Exception {
  12. String[] suffixs_ = new String[] {};
  13. if (suffixs != null) suffixs_ = suffixs.split(",");
  14. if (path.isFile()) {
  15. for (String suffix : suffixs_) {
  16. if (path.getName().endsWith(suffix)) {
  17. // System.out.println(path.getAbsolutePath() );
  18. handler(path);
  19. }
  20. }
  21. } else {
  22. File[] ff = path.listFiles();
  23. if(ff!=null)
  24. for (File x : ff) {
  25. getFile(x, suffixs);
  26. }
  27. }
  28. }
  29.  
  30. /**
  31. * 验证,发现不匹配则删除
  32. *
  33. * @throws IOException
  34. */
  35. public static void handler(File f) throws Exception {
  36. File fsha1 = new File(f.getAbsolutePath() + ".sha1");
  37. if (fsha1.exists()) {
  38. String sha1 =
  39. FileUtils.readFileToString(fsha1, "utf-8").replaceAll("(?m).*(\\w{40}).*", "$1").replaceAll("\\n|\\r", "");
  40. String currsha1 = sha1(f);
  41. if(!sha1.equals(currsha1)){//如果不等,则删除 当前文件和sha1
  42. // System.out.println("sha1file: " + sha1 );
  43. fsha1.delete();
  44. f.delete();
  45. System.out.println(sha1 + " , " + currsha1 + " , " + f.getAbsolutePath());
  46.  
  47. }
  48.  
  49. } else {
  50. f.delete();
  51. }
  52. }
  53.  
  54. public static String sha1(File f) throws Exception {
  55. try (FileInputStream fis = new FileInputStream(f)) {
  56. return org.apache.commons.codec.digest.DigestUtils.sha1Hex(fis);
  57. }
  58. }
  59. }

java校验maven下载的jar文件的更多相关文章

  1. maven下载的jar文件出现invalid LOC header (bad signature)

    有的时候maven下载了相对应的jar文件,但是某些类无法被引入,在eclipse打开该jar文件,发现相对应的类是invalid LOC header (bad signature),这时把mave ...

  2. 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件

    1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以 ...

  3. maven手动增加jar文件

    maven手动增加jar文件 在cmd界面输入: mvn install:install-file -Dfile=D:\com.ibm.mq.jar -DgroupId=com.ibm.mq -Dar ...

  4. Maven使用第三方jar文件的两种方法

    转于http://blog.csdn.net/youhaodeyi/article/details/1729116 主要用于回查与标记 在Maven中,使用第三方库一般是通过pom.xml文件中定义的 ...

  5. Maven使用第三方jar文件的两种方法 转

    在Maven中,使用第三方库一般是通过pom.xml文件中定义的dependency从远程repository中下载该库.但是如果库文件是公司内部的库,或者在本地而不能通过远程repository下载 ...

  6. springboot 多模块 maven 项目构建jar 文件配置

    最近在写 springboot 项目时,需要使用多模块,遇到了许多问题. 1 如果程序使用了 java8 的一些特性,springboot 默认构建工具不支持.需要修改配置 ... </buil ...

  7. Maven使用第三方jar文件的两种方法<转>

    http://www.cnblogs.com/sekai/p/5932206.html 今天用上了.. ===================== 在Maven中,使用第三方库一般是通过pom.xml ...

  8. maven下载的jar包可以查看源码

    1:Maven命令下载源码和javadocs 当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven命令下载这些源码,然后再进行引入,通过mvn命令能够容易的 ...

  9. Maven打包成Jar文件时依赖包的问题

    我们项目中使用到第三方的库文件,这些jar库文件并没有放到Maven中央库上,导致我们需要在项目中自己配置使用.我们的两三个开发人员对Java都是很熟,因此在使用中遇到了一些问题,表现在:在本地中引入 ...

随机推荐

  1. nginx中有关命令和日志切割,配置文件加载的详细阐述

    一.Nginx简介 Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器.Nginx 已经在俄罗斯最大的门户网站── Ram ...

  2. CentOS6下安装Java jdk1.7.0_10和 maven

    安装步骤如下: 1. 下载JDK7.0_10 (jdk-7u10-linux-i586.tar.gz) 地址: 2. 卸载系统自带的开源JDK 查看是否安装JDK rpm -qa | grep jav ...

  3. js中“||”和“&&”的高级用法

    例1:用于赋值&&:从左往右依次判断,当当前值为true则继续,为false则返回此值(是返回未转换为布尔值时的原值哦)|| : 从左往右依次判断,当当前值为false则继续,为tru ...

  4. Android下如何计算要显示的字符串所占的宽度和高度

    Rect bounds = new Rect(); String text = "Hello World"; TextPaint paint; paint = findViewBy ...

  5. LeetCode: 598 Range Addition II(easy)

    题目: Given an m * n matrix M initialized with all 0's and several update operations. Operations are r ...

  6. 浅析Jupyter Notebook

    一 概述 Jupyter Notebook是以web交互式的编程接口,是IPython notebook的升级版本.主要是针对python,另外支持运行 40 多种编程语言.Jupyter可以在个人机 ...

  7. Unicode编码下字符串转换

    VC\MFC当中CString.string.char.char*.char数组.int等类型之间的转换令人晕头转向,特地搜集多篇文章资料,利用代码实例等清晰的理清他们之间的关系和如何转换,其实非常简 ...

  8. solidity 学习笔记(5)接口

    接口:不用实现方法,仅仅定义方法. pragma solidity ^; contract cat{ //cat实际上实现了接口animalEat,因为他们有相同的方法. string name; f ...

  9. pytest框架(一)

    代码示例一 # coding=utf-8 def func(x): return x + 1 def test_answer(): assert func(3) == 5 运行结果 E:\pyYouY ...

  10. 使用htmlparser爬虫技术爬取电影网页的全部下载链接

    昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...