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

解决 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;              }          }      }  }  

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部