-
-
在 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;
-
}
-
}
-
}
-
}
-
-
-
阅读(725) | 评论(0) | 转发(0) |