Maven error in opening zip file?maven源码debug定位问题jar包

2024-01-20 17:04

本文主要是介绍Maven error in opening zip file?maven源码debug定位问题jar包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 问题发现
    • 调试Maven
      • 1. 查看maven版本
      • 2. 下载对应版本的maven源码
      • 3. 打开maven源码,配置启动选项
    • 启动maven debug模式
    • 进入maven 源码,打断点调试
    • 找jar包算账

已录制视频
视频连接

问题发现

最近使用maven分析jar包的时候遇到了一个很搞的问题。我在terminal中输入指令mvn dependency:analyze,出现如下报错
在这里插入图片描述

分析问题发现是 zip file(就是jar包) 打开错误。但maven没告诉我到底是哪个jar包出问题了,只告诉我是dianming-common模块依赖的jar包出问题了,我想查看更详细的信息,于是添加了如下参数

mvn dependency:analyze -e -X重新运行。

好消息,maven输出了更多的信息,坏消息,maven还是没告诉我到底是哪个zip file炸了
在这里插入图片描述

全部的报错信息

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.139 s
[INFO] Finished at: 2024-01-20T15:23:56+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.2:analyze (default-cli) on project dianming-common:Cannot analyze dependencies: error in opening zip file -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.2:a
nalyze (default-cli) on project dianming-common: Cannot analyze dependenciesat org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke (Method.java:498)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot analyze dependenciesat org.apache.maven.plugins.dependency.analyze.AbstractAnalyzeMojo.checkDependencies (AbstractAnalyzeMojo.java:310)at org.apache.maven.plugins.dependency.analyze.AbstractAnalyzeMojo.execute (AbstractAnalyzeMojo.java:246)at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke (Method.java:498)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException: Cannot analyze dependenciesat org.apache.maven.shared.dependency.analyzer.DefaultProjectDependencyAnalyzer.analyze (DefaultProjectDependencyAnalyzer.java:94)at org.apache.maven.plugins.dependency.analyze.AbstractAnalyzeMojo.checkDependencies (AbstractAnalyzeMojo.java:301)at org.apache.maven.plugins.dependency.analyze.AbstractAnalyzeMojo.execute (AbstractAnalyzeMojo.java:246)at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke (Method.java:498)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.util.zip.ZipException: error in opening zip fileat java.util.zip.ZipFile.open (Native Method)at java.util.zip.ZipFile.<init> (ZipFile.java:225)at java.util.zip.ZipFile.<init> (ZipFile.java:155)at java.util.jar.JarFile.<init> (JarFile.java:166)at java.util.jar.JarFile.<init> (JarFile.java:130)at org.apache.maven.shared.dependency.analyzer.DefaultProjectDependencyAnalyzer.buildArtifactClassMap (DefaultProjectDependencyAnal
yzer.java:147)at org.apache.maven.shared.dependency.analyzer.DefaultProjectDependencyAnalyzer.analyze (DefaultProjectDependencyAnalyzer.java:72)at org.apache.maven.plugins.dependency.analyze.AbstractAnalyzeMojo.checkDependencies (AbstractAnalyzeMojo.java:301)at org.apache.maven.plugins.dependency.analyze.AbstractAnalyzeMojo.execute (AbstractAnalyzeMojo.java:246)at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke (Method.java:498)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :dianming-common

我很想吐槽,你倒是把错误的zip file告诉我老铁,告诉我错误模块我排查个der。
我查遍了网上资料都找不到解决方案,于是只能去debug maven的源码。具体的debugger方式学习了这个大佬的文章。如何debug(调试) maven 插件? - 知乎 (zhihu.com)

tip: 这个大佬的文章的某些地方不适用于我所遇到的问题,因此下文所写与大佬文章有较大不同

调试Maven

1. 查看maven版本

cmd中输入mvn -version即可查看版本(我配置了环境变量。如果没有配置,就去下载maven的目录下查看),我的是maven 3.5.4。源码版本需要下载3.5.4
在这里插入图片描述

2. 下载对应版本的maven源码

apache/maven: Apache Maven core (github.com)

这是maven的GitHub官方连接,点击tag,下载对应版本的代码

在这里插入图片描述
在这里插入图片描述

3. 打开maven源码,配置启动选项

用idea打开下载的源码,配置启动选项,具体如下:
在这里插入图片描述
在这里插入图片描述

  • 点击Edit Configurations
  • 点击➕
  • 选择Remote
  • 配置Host为localhost【根据自己需求调整】
  • 配置Port为8000【一般都是8000,后文会说明】

这样就算配置完maven源码的启动参数,接下来我们需要到自己的项目中,开启maven的debug模式即可。

启动maven debug模式

启动maven的debug模式很简单,将平时的mvn指令改为mvnDebug即可。现在回到我们自己的项目,在终端处输入如下指令mvnDebug dependency:analyze -e -X,此时maven开启debug模式,监听8000端口

在这里插入图片描述

tip: 需要注意,8000和Maven源码项目配置的port一致。

进入maven 源码,打断点调试

tip: 具体的调试方式需要具体问题具体分析,我遇到的问题代码时ZipFile的225行(由之前maven输入的错误信息中得到的),我能找到距离该处最近的代码是DefaultBuildPluginManager的137行,因此我是按照下述操作debug

进入maven源码项目,在DefaultBuildPluginManager的137行处打下断点,进行调试。
在这里插入图片描述

我自己的项目需要在此处打断点运行18次,然后再报错代码处:ZipFile的224行,打下断点。放行断点后代码中止到224行。当继续往下运行时发现代码抛出异常,因此定位到问题jar包:D:\repository\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar

在这里插入图片描述

找jar包算账

定位到问题jar包后,我们在文件管理器中搜索D:\repository\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar。发现确实无法打开,至此问题jar包定位成功!
在这里插入图片描述

这篇关于Maven error in opening zip file?maven源码debug定位问题jar包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/626707

相关文章

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要