maven遇到问题总结

xiaoxiao2021-04-18  65

maven遇到的问题总结

1. Missing artifact jdk.tools jdk.tools jar 1.8

新建的项目遇到的问题: pom.xml文件报错. 提示: Missing artifact jdk.tools:jdk.tools:jar:1.8

报错原因:tools.jar包是JDK自带的,pom.xml中依赖的的jar包隐式依赖tools.jar包,而tools.jar并未在库中, 只需要将tools.jar包添加到jdk库中即可。 解决方案:在pom文件中添加如下代码即可: <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jarsy</stemPath> </dependency> 如下,为解决之后的截图:

2. maven项目打包遇到问题:No goals have been specified for this build

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spxmrvJF-1601360316073)(https://i.loli.net/2018/10/10/5bbd8b6291015.png)]

解决方案一 : 在 pom.xml的 build标签里面,添加如下标签即可 : <defaultGoal>compile</defaultGoal>: <build> <defaultGoal>compile</defaultGoal> </build> 解决方案二 : 右键项目-->run as --> maven build, 如下图所示 :

在弹出框的Goals属性里面,输入complie-->点击Run即可!

3. 使用eclipse为maven打包报错 : [ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade (default) on project com.project.name: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]

详细报错信息: org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project bigdata: Error creating shaded jar: invalid LOC header (bad signature) at 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) 解决方法 : 在执行参数里 添加 -X 查看Maven clean 和 Maven install 过程的详细输出日志 或者在项目跟路径下使用命令行执行: mvn clean install -DskipTests -X //执行clean,install过程,打印详细日志并跳过单元测试 仔细查找日志,发现如下报错信息 :

去该报错目录下查看 : 出错的jar包果然有问题, 删除掉该jar包目录,重新打包即可! 注 : maven项目编译时, 经常会出现部分jar包不能正常下载的问题,国内的用户建议使用阿里云镜像

打包好maven项目,执行的时候报错 : jar中没有主清单属性

报错详情 : [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66jklP3a-1601360316083)(https://i.loli.net/2018/11/06/5be0e3c80f14f.png)] 原因: 打包的时候没有添加主类,或者是没有正确的添加主类导致 解决方案 : 用压缩文件打开jar包,发现下面有个META-INF目录,如下图:

  打开该文件夹,查看里面的MANIFEST.MF文件,发现里面并没有指定主类: 文件内容如下所示:

修改MANIFEST.MF文件, 添加上如下的属性:

Main-Class: 类的完全限定名(不要带class或者java后缀) // Main-Class: 后面要有空格

再次执行jar包即可!

如上:问题得到解决,但是真正的疑问在于:我的pom.xml文件里面命名指定了主类,为什么打jar包的时候不会打进去呢?而且,对于同时生成的另一个jar包hdfs_explorer-1.0-SNAPSHOT.jar却是可以直接运行的?

我找到了之前自己使用的maven项目,打成jar包,发现所有的original-*-1.0-SNAPSHOT.jar中的MANIFEST.MF文件中都是没有主类配置的,而另一个jar包里面却有 去官网查看了几个示例: 官网示例链接如下: 并参照了一个大神的详细讲解:您不知道的五件事 original-*-1.0-SNAPSHOT.jar这种jar包确实不会将主类信息添加进去,如果确实需要执行这个jar包,要手动修改MANIFEST.MF文件指定主类

4. maven报错 : Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [A,B] are excluded from annotation processing

报错原因 : 对于比较复杂的项目来说,项目之间可能存在各种依赖关系,这种错误出现的原因就是 项目之间的循环依赖 即A依赖B的同时,B也依赖A. 解决办法 : 理清项目之间的关系,去除循环依赖

5. idea使用maven遇到的jar包不能完全下载的办法

在导入maven项目的时候,遇到如下问题 : 有几个jar包总是不能正常下载 : 首先检查idea的maven相关配置是否有误 : 操作方式 : File-->setting-->搜索maven,我的配置如下图,可以看到是没有问题的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCOIsyDh-1601360316092)(https://i.loli.net/2019/04/12/5cafed48ba41a.png)] 配置没问题,那就重新下载! 发现那几个jar包仍然没有下载下来. 那是不是仓库里面没有这个jar包呢? 我登录私仓的仓库,发现是存在相关jar包的.

最终,我通过这样的方式解决了问题: 在idea右测点击maven框,点击m图标(Maven Goal),如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fCLV2Aqc-1601360316093)(https://i.loli.net/2019/04/12/5cafefafa104e.png)]

会弹出以下框,选择好需要下载jar包的项目路径 输入命令 : mvn -U idea:idea

之后就会开始下载jar包,问题得到解决!!

6. maven下载依赖报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: un able to find valid certification path to requested target

执行命令maven clean install报错,详情如下:

Could not find artifact org.glassfish:javax.el:pom:3.0.1-b06-SNAPSHOT in lls-repository (http://nexus.linklogis.cn/nexus/content/groups/public/) Downloading from aliyun-proxy: https://maven.aliyun.com/repository/public/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata.xml [WARNING] Could not transfer metadata org.apache.maven.plugins:maven-compiler-plugin/maven-metadata.xml from/to aliyun-proxy (https://maven.aliyun.com/r epository/public/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: un able to find valid certification path to requested target

报错原因: 阿里云中央仓库地址更新为了https,所以下载时需要ssl认证

解决方案:

我们可以忽略ssl检查导致的问题,我们可以直接忽略该检查使用命令: 在项目路径下打开终端命令:

mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

我们也可以在IDEA的导入器的vm选项加上这段命令,这样我们也可以通过reimport自动下载maven依赖了,不用在terminal手动输入maven命令了

File-->Settings-->(搜索框输入Impoating)-->设置VM options

如下图:

转载请注明原文地址: https://www.6miu.com/read-4820251.html

最新回复(0)