maven常见错误
摘要: 1.Java-maven异常-cannot be cast to javax.servlet.Filter 报错 tomcat 启动后先将tomcat/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,报错的Filter...
1.Java-maven异常-cannot be cast to javax.servlet.Filter 报错
tomcat 启动后先将tomcat/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,报错的Filter实现了javax.servlet.Filter接口,Filter是在servlet-api.jar里。
解决这个问题的方法就是对于servlet-ap.jar 使用 <scope>标签,编译的时候用到servlet-api和jsp-api,但在打包的时候不用这两个依赖。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>中<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
*system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
2.Maven缺少依赖包,强制更新
mvn clean install -e -U
-e详细异常,-U强制更新
3.java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
解决办法比较多,在项目右键查看Configure中的Java BuildPath,设置为和默认JDK一致就可以。
可以修改settings.xml,添加如下内容:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<profile> <id>jdk-1.7</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile> |
4.编译失败 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project web_nanchang: There are test failures.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project web_nanchang: There are test failures.
[ERROR] Please refer to E:\maven\web_nanchang\target\surefire-reports for the individual test results.
解决方法:
这是因为测试代码时遇到错误,它会停止编译。只需要在pom.xml的<project>里添加以下配置,使得测试出错不影响项目的编译。
|
1
2
3
4
5
6
7
8
9
10
|
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> </plugins> </build> |
命令行:mvn test -Dmaven.test.failure.ignore=true
5.在Eclipse中进行Maven项目断点调试等
1、在安装了m2eclipse插件并配置好maven-tomcat-plugin后,单击Eclipse菜单“Run”中的“Run Configurations”。
2、在弹出的对话框中的左侧树中找“到Maven Build”,在其上点击右键并单击“New”。
3、在右侧的“Name”一栏填入自定义的名称。单击在“Main”选项卡的“Browse Workspace”按钮,选择目标项目,选择后在“Base directory”一栏中会出现形如“${workspace_loc:/project_a}”的内容(project_a是前文所述应用项目A,它会根据你所选的目标项目而改变)。
4、在“Goals”一栏中填入“tomcat:run”。
5、在“Maven Runtime”选择你需要的Maven环境(注意:必须是2.0.8以上的版本)。
6、单击“Apply”,配置完成。
通过以上配置,在eclipse自身的Run和Debug按钮下都会找到以你先前配置中“Name”值为名的条目(条目最前端也会有“m2”标识),单击之后即可启动基于Tomcat之上的相应项目的运行操作或调试操作。
6.Maven编译 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
maven编译项目时出错,提示信息如下:
|
1
2
3
4
5
6
7
8
9
10
11
|
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project springside-core: Compilation failure [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? [ERROR] -> [Help 1] [ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [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/MojoFailureException |
解决方案:
在eclipse的菜单中,进入 Window > Preferences > Java > Installed JREs > Execution Environments,选择JavaSE-1.6, 在右侧选择jdk.
然后在maven菜单中使用 “update project ...”.
7.-Dmaven.multiModuleProjectDirectory system propery is not set
eclipse中使用maven插件的时候,运行run as maven build的时候报错:
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
直接的解决方法:使用低版本的maven。
或者可以执行下面的操作:
设置环境变量M2_HOME指向你的maven安装目录
M2_HOME=D:\Apps\apache-maven-3.3.1
然后在Window->Preference->Java->Installed JREs->Edit
在Default VM arguments中设置
-Dmaven.multiModuleProjectDirectory=$M2_HOME

8.pom文件提示"Missing artifact..."
更新maven工程之后,发现pom.xml文件在如下依赖处报错:
<dependency>
<groupId>cms-dubbo</groupId>
<artifactId>cms-dubbo</artifactId>
<version>0.0.1</version>
</dependency>
报错信息为:Missing artifact cms-dubbo:cms-dubbo:jar:0.0.1
解决方法:
1.确保远程仓库是有对应jar包的,有可能有jar包,但是和你的版本号不对应,这种情况直接更新版本号就可以。
2.确认本地repository相应目录中是否下载好了对应的包。
同时检查发现目录下是否存在以如下结尾的文件:
-not-available
.lastUpdated
该类型文件可以影响更新。将这两个文件删掉,重新build,如果问题解决,应该是之前未下载成功产生了这两个文件,影响了maven正常更新。
3.如果上述办法无效,到eclipse-help-install new software-available software sites下,找之前安装m2eclipse插件的地址,如果是http://download.eclipse.org/technology/m2e/releases,将其卸载,按如下地址重新安装m2eclipse插件:http://m2eclipse.sonatype.org/sites/m2e
4.如果上述方法仍无效,可尝试在eclipse中先用Close Project关掉出问题的工程,然后再Open Project打开;或用Project-Clean重新build该工程。
9.Maven+eclipse工程中Maven Dependencies 文件夹丢失问题
在项目构建路径中更改。
10.Failure to transfer 依赖文件
Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://172.17.xx.xx:xxxx/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus-news has elapsed or updates are forced. Original error: Could not transfer artifact org.codehaus.plexus:plexus-archiver:jar:1.2 from/to nexus-news (http://172.17.xx.xx:xxxx/nexus/content/groups/public/): No response received after 60000
错误原因已经说明:org.codehaus.plexus从nexus仓库传输失败,本地仓库已经存在对应的缓存文件,Maven不会重新下载文件,直到更新索引或者强制更新项目。
解决办法也很简单,直接maven-->updates projects就可以。
11.不能使用eclipse直接创建Maven Web工程
使用Eclipse时,不能一次完成Maven Web项目的创建,需要分步骤才能创建一个完整的Maven Web项目。
我的建议是通过复制粘贴等手工建立Maven的文件结构和pom文件,然后再在Eclipse中import已经存在的Maven项目。
也可以通过下面的步骤,
在Eclipse下新建项目时,选择新建Maven项目,默认点击下一步,在“select an archetype”这步时,
选择org.apache.maven.archetypes maven-archetype-webapp
maven archetype就是创建项目的脚手架,你可以通过命令行或者IDE集成简化项目创建的工作。
下一步输入项目名称,起名为“testMavenWeb”项目,点击【finish】,完成项目创建。
此时,一个Java Maven项目创建成功,但并不是Maven Web项目。
Java Maven 创建成功后,再创建一个Web项目,在“select an archetype”这步时,选择“maven-archetype-webapp”,成功创建一个web项目,
然后将该web项目下的webapp文件夹,拷贝到testMavenWeb项目下,至此,在Eclipse下的Maven Web项目创建成功。
12.Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin...There are test failures.
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project myproject: There are test failures.
Please refer to E:\myproject\target\surefire-reports for the individual test results.
解决方法:
测试代码时遇到错误停止编译。可以在pom.xml的忽略错误,使得测试出错不影响项目的编译。
|
1
2
3
4
5
6
7
8
9
10
|
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> </plugins> </build> |
13.maven手动把安装jar到本地仓库
每次添加单个jar到maven本地仓库的操作如下:
1.建立一个新的文件夹,将jar文件存放在该文件夹下。 注意文件夹下最好只存放该文件。
2.在该文件夹下建立一个pom.xml文件,在pom文件中定义其maven坐标。
3.在cmd窗口中执行以下命令: mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
例如:
mvn install:install-file -Dfile=D:/jar/xxx.jar -DgroupId=xxx.xxx -DartifactId=xxx -Dversion=x.x -Dpackaging=jar
14.xxx was cached in the local repository,resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced
把maven仓库中xxx.lastUpdated文件全部删掉,重新运行maven,
或者在执行maven操作时加 -U参数,就可以忽略xxx.lastUpdated。
15.[ERROR] 找不到javax.servlet.ServletContext的类文件
Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包:servlet-api.jar,并将scope设置为provided。
|
1
2
3
4
5
6
7
|
<!-- 使用HttpServletRequest或 HttpServletResponse需引用的依赖包 --><dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> |
maven常见错误的更多相关文章
- Maven常见错误以及解决方案【转载】
常见的Maven错误 当遇到401错误的时候,看看自己当前使用的Maven是集成的还是自己下载的,然后去配置setting.xml文件
- maven 常见错误解决方法
1. 最重要的一点,使用国内镜像,比如 oschina.net 的镜像: 搜 jar 推荐:http://maven.outofmemory.cn/,速度极快. 2. 错误:Could not res ...
- maven 常见错误解决
1. maven打包编译时后台一直输出警告信息 [WARNING] File encoding has not been set, using platform encoding GBK, i.e. ...
- Maven 常见错误
1.ReasonPhrase: Forbidden: |--- 1.注意用户的权限以及角色role的设置,一般是没有权限才会被禁止的. 2.Failed to collect dependencies ...
- Hbase常见错误解决方法
Hbase常见错误解决方法 原文转载至:https://www.jianshu.com/p/5fd74812c56c 我是通过maven管理的依赖,直接修改maven依赖中hbase的版本就可以了 ...
- dubbo 常见错误 通配符的匹配很全面, 但无法找到元素 'dubbo:application' java.lang.reflect.MalformedParameterizedTypeException 通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明。 Unsupported major.minor version 52.0 (unable to l
dubbo 常见错误 1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 启动时报错,原因是dubbo 依赖 spr ...
- DevOps 之 Jenkins 安装、配置、美化、插件及常见错误处理
继续上一篇的话题,既然已经搭建了 GitLab 的代码仓库,那么现在就可以开始进行下一步持续集成环境的搭建了.公司准备利用 Jenkins CI 进行持续集成,本文记录了 Jenkins 的安装.基础 ...
- 初识JAVA(二)(送给Java和安卓初学者)----常见错误
博主接着上篇的来讲哦,以后的更新中,博主会出一些练习题,有兴趣的可以做做然后吧代码粘贴到下面,大家可以一起研究学习,一起进步,本篇文章主要讲的是: 一.常见错误 二.连接上篇一起的训练 无论是什么方向 ...
- ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock
ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock 通过终端安装程序sudo apt-get install xxx时出错:E: Could not ...
随机推荐
- mysql安装及卸载
一.关于mysql MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是 ...
- [LintCode] Number of Islands 岛屿的数量
Given a boolean 2D matrix, find the number of islands. Notice 0 is represented as the sea, 1 is repr ...
- windows查看进程
由端口到进程: 直接查看进程: 查看本机连接端口: 杀进程: (eg:kill httpd) tskill 1596
- Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds 解决方法
Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires ...
- Hibernate和Mybatis的对比
http://blog.csdn.net/jiuqiyuliang/article/details/45378065 Hibernate与Mybatis对比 1. 简介 Hibernate:Hiber ...
- OCR磁盘的导出和导入、备份和恢复以及移动(ocrconfig命令的应用)
数据库版本:10.2.0.1 一,使用导出.导入进行备份和恢复 Oracle推荐在对集群做调整时,比如增加.删除节点之前,应该对OCR做一个备份,可以使用export 备份到指定文件.如果做了repl ...
- 运行在VMware上的Linux虚拟机如何使用NAT模式连接物理机的外部网络
在VMware Workstation中,默认有3个虚拟交换机,分别是VMnet0(使用桥接网络).VMnet1(仅主机网络)和VMnet8(NAT网络). 首先说一下为什么要用NAT模式,如果你的物 ...
- Python开发问题和解决方案汇集
1.Sublime Text中用Tab批量替换空格Whitespace缩进:Ctrl+A全选代码,Ctrl+Shift+P打开下拉框,输入indent,找到Convert indentation to ...
- 创建一个LinkedList,然后在其中插入多个值,确保每个值都插入到List中间(偶数中间两个数之一,奇数在正中间)
这是Thinking in java 中的一道题,下面是我的解决方案: package test; import java.util.LinkedList; import java.util.List ...
- Android课程---课下练习(表格、线性和相对布局)
1.表格布局 练习代码: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns: ...