【一个记录】在IntelliJ IDEA用Tomcat跑一个Maven配置的spring+mybatis项目

****废话很多,想跳转ctrl+F “问题可以明确为”或“解决方案”****

****非常私人的记录,不接受任何嘲讽****

配置:IntelliJ IDEA、Tomcat 7.0.88、Maven 4.0.0

有用到spring4.1.6,Mybatis。数据库是mongodb,日志是log4j。

web-app version 2.5.


问题描述:读web.xml时出错。

1. 一开始是log4j.properties读不出来,我以为是不能用classpath: /conf/log4j/...这种格式,于是把文件挪了个位置,解决。

2. 接着告诉我某个jar冲突了,翻了翻tomcat配置,找到一个和项目里同样的jar,把它从tomcat里挪了出去,解决。

3. 【重点】然后!!!自己写的两个filter报错。在tomcat localhost log里:

    Exception starting filter xxxx(类名)

    exception 类别是ClassNotFoundException。


解决历程:

第一反应是web.xml里filter写错了,于是紧急查找。IDEA里可按住ctrl后点击类名查找源。结果发现,并没有出错。

下面是正确的filter设置(类名和包都已化名):

<filter>
    <filter-name>aFilterWrittenSelf</filter-name>
    <filter-class>com.packageone.filter.AFilterWrittenSelf</filter-class>
</filter>

于是搜了半天,其中坎坷此处略过,只请容许我吐槽一下度娘的引擎。接下来发现,并不是filter出错了,而是打包的webapp.war出错了。

关于war。
在IDEA里跑Tomcat,有一种跑法是:
将project打成war,然后war解压到tomcat中,再运行其中内容。

打开这个war就发现,在WEB-INF文件夹下,只有lib文件夹和web.xml文件。

于是,自然找不到filter!事实上完全不存在classes文件夹,也就是说,前面出现的问题1问题2也都是这个原因。

那么现在,问题可以明确为:

在idea打包maven项目时,WEB-INF文件夹中没有classes文件夹。

知道了这一点,就找到了解决方向——

才怪。

搜了半天,网上全是没有class文件或是忘记建classes文件夹,并没有人说这个该怎么解决。

不过最后还是摸索了出来。


解决方案:

前奏:其余配置请参照网上各类基础教程。

正文:File->Project Structure (ctrl+alt+shift+s)->Artficts

如果其中已经有artfict存在,请点击红色减号键删除。然后,点击绿色加号键,点击Web Application: Archive,新建unnamed。

然后对其进行配置,最终配置如图。

1.添加deirctory contents

点击略色加号键,Directory Content,选择需要打包的文件夹(内含两个-INF和web.xml的那个)

2.添加WEB-INF (是解决没有classes文件夹的关键)

在右侧Available Elements里双击【‘这是你的项目名’compile output】 向war中添加WEB-INF。


保存!完成!用tomcat跑跑看!成功!!——


感言:太辛酸了,作为spring啊mybatis啊全部都靠自学,之前也只接触过一个ssm项目(无Maven),加之之前用的是eclipse,现在是第一次用idea,真的是完全体小白。辛酸。深感自己是个zz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值