##基本介紹 ###1.變數 定義:可以變化的量 ###2.變數聲明 Java是一種強制類型語言,每一個變數必須聲明類型 ###3.變數名,變數類型和作用域 Java變數是程式中最基本的存儲單元,其要素包括變數名,變數類型和作用域 type varName [=value] [{,varName[= ...
在 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;
}
}
}
}