`
hellohank
  • 浏览: 146353 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

阅读更多

在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;

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

 

0
1
分享到:
评论

相关推荐

    maven开发需要的zip

    5. **多模块项目支持**:大型项目往往由多个模块组成,Maven可以方便地管理这些模块间的依赖关系,一次构建即可处理整个项目。 标签"maven 项目管理"进一步强调了Maven在项目组织和管理中的重要角色。它使得团队...

    IntelliJ IDEA 12创建Maven管理的Java Web项目

    #### 遇到问题的解决 - **缺少web目录**: 如果发现新建的Maven项目中没有Web目录,可以通过框架支持向导来添加Web应用的目录结构。 - **POM文件的依赖管理**: 需要添加的依赖应该明确指定groupId、artifactId和...

    SVN管理软件+Maven小项目.rar_SVN管理软件+Maven小项目_svn

    用户可以对文件进行增删改查操作,并通过提交来保存变化,同时记录每一次修改的历史。 2. **版本控制**:SVN允许开发人员在不同的时间点创建文件的不同版本,以便于回溯到任何历史状态,防止数据丢失或错误。 3. *...

    maven 3.2.5

    大型项目通常由多个子项目组成,Maven 支持多模块项目结构,使得可以一次构建所有子项目。每个子项目都有自己的POM,而父POM负责整体的协调和依赖管理。 6. **配置优化**: Maven 3.2.5 提供了更高效和灵活的配置...

    nexus+svn+jenkin_hudson+maven+禅道项目管理软件环境搭建一

    在敏捷开发中,开发者可以频繁地提交代码,SVN能记录每一次变更,方便回溯和协作。它还支持分支和合并,便于多团队并行开发。 **Jenkins(Hudson)**: Jenkins是一个开源的持续集成服务器,它能够自动构建、测试和...

    maven-3.5.2

    6. **多模块项目支持**:大型项目通常由多个子模块组成,Maven能够有效地管理这种结构,允许在顶层POM中定义所有子模块,并一次性构建整个项目。 在"apache-maven-3.5.2"压缩包中,包含了完整的Maven 3.5.2发行版的...

    maven-3.3.9

    通过定义父POM和模块关系,可以实现一次性构建所有子模块。 4. **生命周期与构建阶段**:Maven有预定义的生命周期,包括`clean`、`default`和`site`,每个生命周期包含一系列构建阶段(如`compile`、`test`、`...

    apache-maven-3.6.3.zip

    1. **pom.xml**:每个Maven项目都有一个POM文件,它是Maven构建的基础,定义了项目的属性、依赖、构建过程等信息。 2. **src/main/java**:这里存放的是Maven的核心源代码,包括各种Maven模块和组件。 3. **src/...

    javamaven

    5. **多模块项目支持**:大型项目通常由多个子模块构成,Maven可以轻松管理这些模块之间的依赖关系,并进行一次性构建。 6. **统一构建过程**:Maven通过标准化的构建过程,使得不同的Java项目遵循相同的构建规则,...

    SpringMaven

    7. **SpringMaven的持续集成**:结合Jenkins、Git等工具,SpringMaven项目可以实现持续集成和持续部署,确保代码的稳定性和质量。 8. **SpringMaven的优化**:通过设置Maven的缓存、使用Maven插件优化构建过程,...

    《Maven 实战.pdf》 高清下载地址下载

    总的来说,《Maven 实战.pdf》这本书将深入探讨如何有效利用 Maven 进行项目管理和构建,包括最佳实践、高级特性以及常见问题的解决方案,对于提升开发效率和团队协作具有极大的帮助。通过阅读这本书,开发者可以...

    hudson svn maven deploy BOM

    它允许团队成员协同工作,记录每一次修改,合并不同人的工作,并且可以方便地回滚到历史版本。在开发环境中,Hudson经常与SVN结合使用,自动拉取最新代码并进行构建。 3. **Maven**:Apache Maven 是Java项目管理...

    maven&svn Plugin.zip

    SVN通过记录文件和目录的每一个版本,使得团队成员可以协作开发,同时追踪每一次修改。当多人同时编辑同一份文件时,SVN可以解决冲突问题,确保代码的一致性。在IDEA中,内置的SVN插件提供了直观的界面,用于执行...

    Maven新版蓝缘系统源代码

    4. pom.xml:Maven项目的配置文件,定义项目信息、依赖库、构建目标等。 5. README.md或README.txt:项目说明文档,包含项目简介、使用方法、贡献指南等内容。 深入研究“Maven新版蓝缘系统源代码”,开发者不仅...

    openfire3.9.3 eclipse工程 编译成功

    【标题】"openfire3.9.3 eclipse工程 编译成功" 描述了一次在Eclipse集成开发环境中编译开源即时通讯服务器Openfire 3.9.3版本的过程。这个过程中遇到了各种问题,但最终通过解决缺失的jar包和确保版本匹配,成功...

    Jenkins+Maven+svn+Tomcat入门文档

    SVN可以记录每一次更改以及修改者的信息,帮助团队协作开发。 **安装** - **下载地址**:官方网站或其他可靠的下载来源。 - **安装步骤**:安装SVN客户端和服务端软件。 #### Jenkins **基本介绍** Jenkins是一...

    hudson+maven

    - **设置Maven项目**: 使用 Maven 来管理项目的构建和依赖。 - **配置Hudson/Jenkins**: 设置持续集成任务,如自动构建、自动测试。 - **集成SonarQube**: 在项目构建过程中集成 SonarQube,进行代码质量分析。 ###...

    请人帮忙编译看是否报错的工程

    10. **社区求助**:如果以上方法都无法解决问题,可以将问题发布到相关的技术论坛(如Stack Overflow)或开发者社区,利用集体智慧解决问题。 总之,解决编译错误需要耐心、细心以及对编程语言和工具的深入理解。...

    maven+springmvc+spring+mybatis框架V1.0

    SSMAgain可能指的是"Spring, SpringMVC, MyBatis Again",意味着这是对这些技术的又一次整合和实践,以期达到更优的性能和开发体验。 总之,Maven+SpringMVC+Spring+MyBatis的组合为Java Web开发提供了一种强大而...

    Java+Springboot+Mysql+Maven+H-ui实现营销管理系统

    综上所述,这个营销管理系统融合了Java的编程能力、Springboot的微服务架构、Mysql的数据存储功能、Maven的项目管理和H-ui的前端设计,形成了一套完整的解决方案。开发者可以利用这套技术栈快速搭建稳定、高效的管理...

Global site tag (gtag.js) - Google Analytics