前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决 maven 项目无法编译的问题

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

原创
作者头像
FHAdmin
发布2022-05-19 10:27:18
1.4K0
发布2022-05-19 10:27:18
举报
文章被收录于专栏:FHADMINFHADMIN

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

代码

  1. Malformed \uxxxx encoding.  

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

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

代码语言:javascript
复制
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;  
            }  
        }  
    }  
}  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档