创建maven项目出现的问题及解决
来源:互联网 发布:过滤蓝光软件 编辑:程序博客网 时间:2024/05/11 04:35
这几天在做毕业设计,需要搭建项目,当第二次碰到的时候又忘记怎么解决的了,看之前的备注以及解决方法才想起来怎么弄,今天想把所出现的问题以及解决方法进行重新整理一下,如果有错误可以一起讨论讨论,哈哈~
- 创建web项目,没有web.xml导致pom.xml出现web.xml is missing and is set to true的错误
- jsp页面头部信息错误 The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path
- maven依赖servlet-api和jsp-api的问题
- maven中json-lib库无法引入
- 如何修改maven项目名称
- 如何修改复制项目的根路径
一、创建web项目,没有web.xml导致pom.xml出现web.xml is missing and is set to true的错误
如果你是这样创建maven项目的:
解决方法是
如果你的maven项目在创建的时候已经是war项目了,那么解决方法是:
二、jsp页面头部信息错误 The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path
当创建一个jsp就会出现这个问题,原因是缺少tomcat
解决方法是:
2.1 方法1:
2.2方法2:
在pom.xml文件中加入:
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>80</port> <path>/income</path> </configuration> </plugin> </plugins></build>
三、maven依赖servlet-api和jsp-api的问题
原代码:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> </dependency>
导致的错误是:
Java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
原因:
在运行的时候,容器会提供servlet-api和jsp-api这两个jar包,假如没有填写scope作用域,就会导致与tomcat中的servlet-api和jsp-api冲突,所以,这两个要加上scope为provide,使其能够在编译和测试阶段使用(为了能够让jsp编译通过)
解决方法:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency>
3.1 需要这servelt-api和jsp-api的原因:
1. 为了能够将jsp能够正确编译 2. jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类);jsp更擅长表现于页面显示,servlet更擅长于逻辑控制;Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到 3.Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。
3.2 Servlet的生命 周期:
第一个客户端的请求到达 ServerServer 调用 Servlet 的 init() 方法(可配置为 Server 创建 Servlet 实例时调用,在 web.xml 中 <servlet> 标签下配置 <load-on-startup> 标签,配置的值为整型,值越小 Servlet 的启动优先级越高)一个客户端的请求到达 ServerServer 创建一个请求对象,处理客户端请求Server 创建一个响应对象,响应客户端请求Server 激活 Servlet 的 service() 方法,传递请求和响应对象作为参数service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如 doGet() 或 doPost() 或程序员自己开发的新的方法。对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。一般 Servlet 只初始化一次(只有一个对象),当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。
3.3 这里讲解一下scope作用域:
1. compile(缺省值):compile表示被依赖项目参与当前项目的变异,包括测试,运行周期也参与其中,是一个**比较强的依赖** 2. provided:表示打包的时候可以不用包进去。事实上改以来理论上可以参与编译、测试、运行等周期。相当于compile,但是在打包阶段做了exclude,也就是说再运行的时候不会发布出去 (例如: 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。 而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。换句话说,**它只影响到编译,测试阶段**。 在编译测试阶段,我们需要这个artifact对应的jar包在classpath中, 而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包(例如tomcat已经提供了这个jar包在运行的时候) ,所以无需我们这个artifact对应的jar包了。 ) 3. runtime,在**运行和测试**时使用,在编译阶段不使用,如JDBC驱动,适用运行和测试阶段 4. system:从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用 5. test,只在**测试**时使用,用于编译和运行测试代码。不会随项目发布。
四、maven中json-lib库无法引入
一开始是这样写的:
错误是:
解决方法及原因:
官网上面有两个文档:
所以是因为json-lib库有两个jdk版本的实现,json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar,需要加上描述符即可
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
五、如何修改maven项目名称
需要两步骤:
修改
六、如何修改复制项目的根路径
0 0
- 创建maven项目出现的问题及解决
- 创建maven项目及遇到的问题
- myeclipse创建maven项目相关问题及解决
- 使用MyEclipse创建Maven项目出现的错误及解决方法
- 总结:创建maven项目时可能会出现的问题
- eclipse下maven项目的创建以及问题的解决
- eclipse下maven项目的创建以及问题的解决
- eclipse下maven项目的创建以及问题的解决
- 创建maven出现的问题
- Maven项目创建出现WebContent问题
- 解决IDEA创建maven项目太慢的问题
- 关于myEclipse10创建maven项目的问题(解决)
- 解决maven创建项目报错问题
- maven项目运行出现问题及解决方案
- github项目导入Android studio 出现的问题及解决
- 创建maven-spring-boot项目是出现pom出现问题
- 解决maven web项目倒入eclipse不出现Maven Dependencies 和 Java System Library的问题
- 【问题及解决】创建Maven webapp项目后JSP 报错
- PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- Win64 驱动签名
- 蓝桥杯 —— 打印十字图
- iOS--LaunchImage启动页设置及问题解决
- C++ 宏定义和 typedef 的区别
- 创建maven项目出现的问题及解决
- Groovy基础语法总结
- gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
- PHP调用微信接口报{"errcode":41005,"errmsg":"media data missing"}错误
- Android设计模式(十二)-备忘录模式
- 百度前端学院—小薇学院—任务一
- javaBean与内省操作
- 【项目】智能羽毛球拍动作捕获结构体解析
- Shell入门(二)传递参数