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

 

目录
相关文章
|
9天前
|
Java Maven
Maven编译报错
Maven编译报错
54 4
|
3月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
316 3
|
2月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
209 0
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
650 0
|
5月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
171 6
|
10月前
|
Java Maven
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
在执行Maven项目中的`install`命令时,遇到编译插件版本不匹配的错误。具体报错为:`maven-compiler-plugin:3.13.0`要求Maven版本至少为3.6.3。解决方案是将Maven版本升级到3.6.3或降低插件版本。本文详细介绍了如何下载、解压并配置Maven 3.6.3,包括环境变量设置和IDEA中的Maven配置,确保项目顺利编译。
11082 5
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
|
11月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
322 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
11月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
830 8
|
11月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
1482 3
|
12月前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
916 2