maven遇到问题总结

maven遇到的问题总结

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cU9W7vgK-1601360316069)(https://i.loli.net/2018/09/29/5baf5b088a222.jpg)]

报错原因: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>
如下,为解决之后的截图: 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B15uFQo0-1601360316071)(https://i.loli.net/2018/09/29/5baf5b4b1b77c.jpg)]

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, 如下图所示 : 

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

在弹出框的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过程,打印详细日志并跳过单元测试
仔细查找日志,发现如下报错信息 :

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

去该报错目录下查看 : 出错的jar包果然有问题, 删除掉该jar包目录,重新打包即可!

注 : maven项目编译时, 经常会出现部分jar包不能正常下载的问题,国内的用户建议使用阿里云镜像

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

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

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

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

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

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

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

再次执行jar包即可!

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

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

我找到了之前自己使用的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

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

之后就会开始下载jar包,问题得到解决!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXua306O-1601360316095)(https://i.loli.net/2019/04/12/5caff044758db.png)]

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

如下图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值