IDEA创建Maven项目做Java Web时无WEB-INF/classes的问题
昨天开始学习Java Web中的Servlet,学到用IntelliJ IDEA创建Java Web项目时,跟着课程上老师的步骤一步步做,却发现运行时Servlet找不到。坑爹的是,练习建项目时,一模一样的操作过程,走了几遍,有的没问题,有的有问题。
创建项目的过程:
- 新建Maven项目,不使用任何Archetype
- 创建目录:
<项目根目录>/src/main/webapp/ - 在Project Structure的Modules中添加Web
- 将Deployment Descriptors和Web Resource Directories的项都做到
<项目根目录>/src/main/webapp/ - 点击自动提示的“Create Artifact”自动创建一个Artifact(类型:Web Application: Exploded)
- 在Run/Debug Configuration中添加Tomcat Server,其中添加上面的Artifact,能正常启动
- 在
<项目根目录>/src/main/webapp/添加HTML文件、JSP文件等,都能正常访问 - 在
<项目根目录>/src/main/中编写Servlet,不能访问,报ClassNotFoundException
观察Java Web的输出目录<项目根目录>/out/artifacts/xxx_Web_exploded/可以发现,WEB-INF/目录下根本没有classes/目录,那么当然找不到Servlet。此外,对比没出问题的项目,可以发现连Maven的输出目录<项目根目录>/target/都没有。手动mvn compile,此时target/目录才会生成,但即使在此基础上再做rebuild Artifact,其中的.class文件也不会复制到WEB-INF/中。
所以问题的直接原因很明了,就是IDE根本就没有做Servlet的编译和字节码文件复制。
在IDE中的操作过程都是一样的,所以盯着界面找了半天也没找到什么不同。最终,通过使用VSCode直接一一diff正常项目和问题项目文件的办法,找到了出问题的地方——IDEA项目的.iml文件。
在项目的.iml文件中,有这么一段:
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
将这一段删除,再重启Tomcat,发现target/目录和WEB-INF/classes/目录马上就都有了,此时程序运行就一切正常了。
我暂时没去专门查资料搞清这一段到底是什么含义,具体是什么机制导致了上面的现象,有知道的朋友可以留言说一下。
IDEA创建Maven项目做Java Web时无WEB-INF/classes的问题的更多相关文章
- 修改Intellij Idea 创建maven项目默认Java编译版本
在使用Intellij Idea 创建Maven项目时,默认的Java Language是1.5,虽然可以在Project Structrue中修改,但是每次pom.xml文件有变化时,工程又会重置到 ...
- eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本
eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本 在使用 eclipse 创建 maven 项目的时候,默认的 web.xml 的版本时 2.3,默认 jre 的版本 ...
- java web开发入门九(Maven使用&idea创建maven项目)基于intellig idea
Maven 1.解决的问题 jar包的依赖和管理:版本.依赖关系等 自动构建项目 2.maven介绍 1.Maven是什么? Apache Maven是一个软件项目管理的综合工具.基于项目对象模型(P ...
- eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...
- 创建Maven项目时,出现系列的错误提示的修改方法
1.创建Maven项目成功之后,需要修改一些配置, (1).java版本改为“本系统中java的版本号” 问题一:(2).Dynamic Web Module的version要改为2.5以上,然而本人 ...
- 创建maven项目时,提示 overlaps the workspace location
创建maven项目时提示: Invalid project description.OKF:\java\mywork overlaps the workspace location: F:\java\ ...
- 【转】maven 项目出现 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
http://blessht.iteye.com/blog/1104450 http://www.cnblogs.com/zhouyalei/archive/2011/11/30/2268606.ht ...
- eclipse 创建maven 项目 动态web工程报错
Eclipse 创建maven 项目 动态web工程 注:Eclipse版本为(Version: Mars.1 Release (4.5.1))maven版本为(apache-maven-3.3.9) ...
- maven 项目出现 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
maven 导入项目中经常出现这个问题 严重: Error configuring application listener of class org.springframework.web.cont ...
随机推荐
- [C++]-string类的常用操作
代码 #include<iostream> #include<string> #include<algorithm> using namespace std; in ...
- spring中的组合模式
org.springframework.cache.support.CompositeCacheManager /* * Copyright 2002-2016 the original author ...
- MySQL索引篇之索引存储模型
本文重点介绍下索引的存储模型 二分查找 给定一个1~100的自然数,给你5次机会,你能猜中这个数字吗? 你会从多少开始猜? 为什么一定是50呢?这个就是二分查找的一种思想,也叫折半查找,每 ...
- SpringBoot - 集成Auth0 JWT
目录 前言 session认证与Token认证 session认证 Token认证 JWT简介 JWT定义 JWT数据结构 JWT的类库 具体实现 JWT配置 JWT工具类 测试接口 前言 说说JWT ...
- STM32—驱动BT-06蓝牙模块传输数据
文章目录 BT-06简介 数据透传 配置串口 USART1初始化函数 USART2初始化函数 USART2的NVIC配置 USART1串口重映射 BT-06简介 BT06蓝牙模块是专为智能无线数据传输 ...
- Android模块化开发实践
一.前言 随着业务的快速发展,现在的互联网App越来越大,为了提高团队开发效率,模块化开发已经成为主流的开发模式.正好最近完成了vivo官网App业务模块化改造的工作,所以本文就对模块化开发模式进行一 ...
- NOIP 模拟 $24\; \rm matrix$
题解 \(by\;zj\varphi\) 发现 \(\rm n,m\) 都很小,考虑分行状压. 但是上一行和下一行的按钮状态会对当前行造成影响,所以再枚举一个上一行的按钮状态. 因为对于两行,只有如下 ...
- npm常用命令及其node相关工具汇总
它是一个事件驱动异步I/O单进程的服务端JS环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 浏览器是JS的前端运行环境. Node.js是JS的后端运行环 ...
- 【iKBC poker2】使用说明书(简体中文版)自用
主要功能介绍: 可携带式 60%键盘 搭配 QWERTY 配置(61 Key) Cherry MX 系列轴 (黑.青.茶.红) 双层板 PCB 键帽材质: ABS(喷漆镀膜-LED 专用).PBT L ...
- 单例对象 (Singleton)设计模式
单例的目的是为了保证运行时Singleton类只有唯一的一个实例,用于一些较大开销的操作. 饿汉式(没有线程安全问题): ' 由于使用static关键字进行了修饰,只能获取到一个对象,从而达到了单例, ...