• 解决 maven 项目无法编译的问题


    在 idea 中编译时,出现以下错误

    代码
    1. Malformed \uxxxx encoding.  

     经过各种资料和分析后,是因为依赖的 jar 包有下载不完整导致的。解决办法是,把这些本地 maven 仓库中下载有问题的 jar 包删除,重新打包项目即可(idea 中就是 reload)。

    找到并删除这些有问题的 jar 包的方法,我写了一个 java 类来操作(依赖 commons-io 包),具体如下:

    package com.tmp;  
      
    import org.apache.commons.io.DirectoryWalker;  
    import org.apache.commons.io.FileUtils;  
      
    import java.io.File;  
    import java.io.IOException;  
    import java.util.ArrayList;  
    import java.util.Collection;  
    import java.util.Enumeration;  
    import java.util.List;  
    import java.util.zip.ZipEntry;  
    import java.util.zip.ZipFile;  
    
    
    /**
     * 说明:验证jar完整
     * 作者:FH Admin
     * from:fhadmin.cn
     */
    public class FindInvalidJarAndDel extends DirectoryWalker<String> {  
        public static void main(String[] args) throws IOException {  
            // 查找本地maven仓库  
            File startDir = new File("C:\\Users\\beta\\.m2\\repository");  
            FindInvalidJarAndDel finder = new FindInvalidJarAndDel();  
            List<String> finded = new ArrayList<>();  
            finder.walk(startDir, finded);  
            if (finded.size() > 0) {  
                //删除对应的文件  
                for (String f : finded) {  
                    System.out.println(f);  
                    try {  
                        FileUtils.forceDelete(new File(f));//删除整个文件夹  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
      
        protected void handleFile(File file, int depth, Collection<String> results) throws IOException {  
            if (results.contains(file.getParent())) {  
                return;  
            }  
            if (file.getName().endsWith(".lastUpdated")||file.getName().toLowerCase().endsWith("resolver-status.properties")) {  
                results.add(file.getParent());  
                return;  
            }  
            if (file.getName().endsWith(".jar")) {  
                //尝试解压一下,如果不能解压,则说明jar包有问题  
                try {  
                    ZipFile zip = new ZipFile(file);  
                    Enumeration zipEntries = zip.entries();  
                    while (zipEntries.hasMoreElements()) {  
                        ZipEntry entry = (ZipEntry) zipEntries.nextElement();  
                        entry.getName();  
                        entry.getSize();  
                    }  
                } catch (Exception e) {  
                    results.add(file.getParent());  
                    return;  
                }  
            }  
        }  
    }  
  • 相关阅读:
    SQL数据库一直显示正在还原
    jQuery获取display为none的隐藏元素的宽度和高度的解决方案
    火狐打开新标签页面不出现九宫格的设置
    【转】在C#中?,?:和??
    【转】JS字符(字母)与ASCII码转换方法
    如何为 .NET Core 安装本地化的 IntelliSense 文件
    compass typography 排版 常用排版方法[Sass和compass学习笔记]
    单元测试 逃不开的Done 与约定
    SASS+COMPASS 自适应 学习笔记
    compass tables 表格 表格常见样式[Sass和compass学习笔记]
  • 原文地址:https://www.cnblogs.com/m13002622490/p/16287568.html
Copyright © 2020-2023  润新知