美文网首页
解决 maven 项目无法编译的问题

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

作者: IT祖师爷 | 来源:发表于2022-05-19 10:28 被阅读0次

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

    代码

    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; 

                } 

            } 

        } 

    相关文章

      网友评论

          本文标题:解决 maven 项目无法编译的问题

          本文链接:https://www.haomeiwen.com/subject/gaftprtx.html