maven遇到问题总结_new个对象先的博客-程序员信息网

技术标签: 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

如下图:

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40861707/article/details/82995907

智能推荐

【FPGA教程案例33】通信案例3——基于FPGA的BPSK调制信号产生,通过matlab测试其星座图_fpga bpsk_fpga和matlab的博客-程序员信息网

BPSK(BinaryPhaseShiftKeying)-------二进制相移键控。是把模拟信号转换成数据值的转换方式之一,利用偏离相位的复数波浪组合来表现信息键控移相方式。BPSK使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。BPSK的映射关系如下所示其实现结构图如下图所示首先,将输入的1010二进制数据中的0都转化为-1,使得非极性码变为极性码。然后将数据通过一个FIR低通滤波器进行成型处理,成型滤波的主要目的是。......

算法起步之Dijkstra算法_weixin_30242907的博客-程序员信息网

算法起步之Dijkstra算法 原文: 算法起步之Dijkstra算法 友情提示:转载请注明出处【作者 idlear 博客:http://blog.csdn.net/idlear/article/details/19687579】 Dijkst...

js中对象合并的4种方式,数组合并的4种方法_燕穗子博客的博客-程序员信息网_js 对象合并

一、对象合并1、拓展运算符(...)2、Object.assign()3、递归赋值4、jquery中的extend()二、数组合并1、扩展操作符2、使用array.concat()方法进行合并3、关于Apply4、array.push()方法进行合并

HTML 初识笔记总结(一)_前小白,快跑!的博客-程序员信息网_初识html实验总结

HTML 初识笔记总结(一)hello world! 我是前小白,一名平凡的小白级前端工程师。一、 HTML常见页面规范 &lt;!DOCTYPE html&gt;叫浏览器用 HTML5 文档格式解析该网页 &lt;html lang="en"&gt; 网页语言中文 &lt;head&gt; &lt;meta charset="UTF-8"&gt; 设定网页字符编码,常用的有utf-8和gb2312; &lt;meta name="viewpor

gensim的LSI模型来计算文档的相似度_tiryzheng的博客-程序员信息网

[python] view plaincopyfrom gensim import corpora,models,similarities  dictionary=corpora.Dictionary.load('/tmp/deerwester.dict')  corpus=corpora.MmCorpus('/tmp/deerwester.mm')  

设置element表格属性(背景透明,颜色,边框...)_Cc_Debugger的博客-程序员信息网

/* 整个表格的宽度 */.tableBox { width: 470px;}/* 标题行的内边距 */::v-deep .tableBox th { padding: 3px;}/* 内容行的属性 */::v-deep .tableBox td { padding: 0px !important; text-align: center;}/* 边框 */::v-deep .el-table--border,.el-table--group { border: 1p

随便推点

windows默认调试器注册表位置_风清扬_jd的博客-程序员信息网

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]"UserDebuggerHotKey"=dword:00000000"Debugger"="\"C:\\Windows\\system32\\vsjitdebugger.exe\" -p %ld -e %ld"[HKEY_LOCAL_MACHINE\SOFTWARE\Micros

【论文笔记】QBSUM: 基于查找的文本摘要数据集_啦啦伟vv的博客-程序员信息网

QBSUM: a Large-Scale Query-Based Document Summarization Dataset fromReal-world Applications基于查询的文档摘要旨在提取或生成直接回答或与搜索查询相关的文档的摘要。这是一项重要的技术,可以有益于各种应用程序,例如搜索引擎、文档级机器阅读理解和聊天机器人。目前,为基于查询的摘要设计的数据集数量不足,现有数据集的规模和质量也有限。此外,据我们所知,没有公开可用的基于中文查询的文档摘要数据集。在本文中,我们提出了 QBSUM

Jquery easyui从零单排之datagrid查询_我本良人的博客-程序员信息网

这里开始学习datagrid查询功能的实现。一、前台代码: Start from zero <table id="dg" title="Client Side Pagination" toolbar="#tb" fitcolumns="true" rownumbers="true"

InSAR 大气校正数据 GACOS_dingli8570的博客-程序员信息网

Generic Atmospheric Correction Online Service for InSAR (GACOS) 是纽卡斯尔大学Li Zhenhong 教授团队提供大气改正数据,数据可以在网站 http://ceg-research.ncl.ac.uk/v2/gacos/上进行申请,时间分辨率可以精确到分钟,空间分辨率为90m。申请到数据之后可以利用该数据对InSAR的...

Tacacs-协议交互报文抓包示例_曹世宏的博客的博客-程序员信息网_tacacs aaa认证交互日志报文

其他文章:Tacacs+协议原理Tacacs+服务搭建与配置详解Tacacs+各厂商交换机配置Tacacs+协议交互报文抓包示例tacacs+协议报文抓包示例如果使用wireshark对tacacs+报文进行抓包,需要将tacacs+服务器的tac_plus服务监听端口设置为49,这是为tacacs+分配的默认端口,TCP 49。此时,会将TCP 49端口的报解码为tacacs+报文。否则,看到的都是TCP交互报文。实验拓扑:本次实验在eve-ng仿真环境中进行测试,可测试..

Centos安装K8s单集群-calico网络_vx_justonejoke的博客-程序员信息网_k8s yum安装calico

系统要求至少2 CPU , 4G RAMcat /proc/cpuinfo |grep 'processor' |wc -l 确认cpu个数关闭防火墙systemctl stop firewalldsystemctl disable firewalld 关闭selinuxsed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 将 SELinux 设置为 permissive 模式(相

推荐文章

热门文章

相关标签