我正在Eclipse Juno中开发一个webapp作为Maven多模块项目,使用Spring MVC和Jetty Maven插件版本8.1.7.v20120910,在开发期间使用HSQL作为内存数据库。我想使用jetty:run目标从IDE中启动Jetty。问题是我无法看到Spring的任何日志输出,但我怀疑上下文确实被加载,因为控制台日志输出暂时停止 - 只要加载我那么小的Spring上下文 - 然后再抛出一个NPE一个自动装配的bean。所以我怀疑在启动Spring上下文时出了什么问题。
这是在“短暂停止”之前的日志输出:
[INFO] web.xml file = file:/F:/projects/matching/template/template-app/src/main/webapp/WEB-INF/web.xml
[INFO] Webapp directory = F:\projects\matching\template\template-app\src\main\webapp
2013-01-26 11:09:18.130:INFO:oejs.Server:jetty-8.1.7.v20120910
2013-01-26 11:09:20.704:INFO:oejpw.PlusConfiguration:No Transaction manager found - if your webapp requires one, please configure one.
暂停后紧接着:
2013-01-26 11:09:35.884:INFO:/:No Spring WebApplicationInitializer types detected on classpath
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.743:WARN:oejw.WebAppContext:Failed startup of context o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
java.lang.NullPointerException
现在我相信我能够修复导致NPE的任何问题,但为此我需要看看我的Spring环境发生了什么。去年,当一位同事设置了我认为与我现在使用的配置相同的配置时,我曾经使用过同样的工具。
我整个上午都在网上搜索过,找不到任何有用的东西,只有模糊的建议在外部运行Jetty并组装战争并部署应用程序,这正是我想要的。
这是我的pom的构建配置:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml>
<warName>template</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml>
<webApp>
<jettyEnvXml>${jettyEnvXml-file}</jettyEnvXml>
</webApp>
<contextPath>template</contextPath>
<systemProperties>
<systemProperty>
<name>log4j.configuration</name>
<value>file:jetty/log4j-jetty.properties</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
这是我对Jetty的log4j配置:
log4j.debug=true
log4j.threshold=ALL
log4j.rootLogger=DEBUG, consoleLogger
log4j.appender.consoleLogger=org.apache.log4j.ConsoleAppender
log4j.appender.consoleLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleLogger.layout.ConversionPattern=%-5p [%t]: %m%n
log4j.appender.consoleLogger.Threshold=TRACE
我的日志开头可能与此行有关吗?
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
但据我所知,这只是一个可以忽略的m2e bug。我虽然在我的类路径中有slf4j。
当我在SpringJPA模块中使用HSQL运行我的单元测试时,它运行良好,所以我怀疑它是一个Jetty问题或者我的log4j配置只是假的。
非常感谢任何想法,提示和帮助。
答案 0 :(得分:0)
你的类路径中有slf4j,然后Jetty将使用slf4j。
您甚至可以setup slf4j to have its log events route to log4j实际写入磁盘或呈现给您的控制台。