问题描述:

前一段时间电脑第一次导入Maven项目,又是pom文件错,改好后又是运行Tomcat报Log4j错误,一直倒腾了近一个月程序才成功跑起来,太不容易。

也上网查了很长时间,没一个方法能解决我的问题的。特记下解决方法,希望能帮到像我这样的web刚入门者。

(刚入门,肯定有说的不对的地方,有错也希望能指出来,我改正)

前期操作:导入项目后clean,install,update,MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法-LMLPHP中会报错(因为我已经解决了,所以没有×)。

两问题对应解决方法:

1.pom文件第一行大红叉,说明是项目的文件指向不正确,看MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法-LMLPHP中error的Path,比如../webapp/..的错不用看,这些都是框架中的错,而框架不会错的,所以不用管,除去这些错,看项目本身的错误的地址,并找到这些有错误的文件,将其删掉(不用担心,这些在后期更新时会自动生成,而这些自动生成的就是正确的),除去框架的错的文件全部删完后,再update,再删除,多重复几次上述步骤,pom就不会报错了,成功解决~!

2.启动tomcat,跑不起来,总是有这个

MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法-LMLPHP

然后卡住,翻译一下就是log4j没有初始化的意思,上网查错误信息,说是没有log4j配置文件,(前提:有log4j包,若没有log4j包,也有可能是缺包的原因,上网下载并添加即可),因此需要在类似如下目录下conf中新建文件,名为log4j.properties

MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法-LMLPHP

并在其中添加内容

log4j.rootLogger=DEBUG , stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n
log4j.appender.stdout.Target = System.out

### Output to the log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${scores.root}/WEB-INF/logs/error.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd 
log4j.appender.ServerDailyRollingFile.File=${scores.root}/WEB-INF/logs/error.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern= %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n 
log4j.appender.ServerDailyRollingFile.Append=true

log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.org.mybatis=DEBUG 
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
com.ng.mapper=DEBUG

创建完成后,在类似如下目录中找到web.xml

MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法-LMLPHP

查找是否有以下语句

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>classpath:conf/log4j.properties</param-value> 
</context-param> 

<context-param> 
     <param-name>log4jRefreshInterval</param-name> 
     <param-value>60000</param-value> 
</context-param> 
<listener> 
     <listener-class> 
          org.springframework.web.util.Log4jConfigListener 
     </listener-class> 
</listener> 

<listener> 
     <listener-class> 
          org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
</listener>

如果有的话,首先查看语句是否完整,监听与声明顺序不能反,不然会报错;其次,查看代码其中的MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法-LMLPHP地址有没有错,地址一定是刚才添加log4j.properties配置文件的地址,否则会报Not Found log4j.properties的错误。

如果没有这些代码,就把上述代码加到web.xml中,保存,update,启动tomcat,终于运行成功!!

04-13 16:08