我们公司的项目菜单结构需要加载treeData.xml,treeData_sc.xml,我在点击一个菜单按钮时,没有出现预期的菜单结构,查看了一下控制台,如下:
14:54:05 INFO [http-8080-1] MenuManageServlet - MenuManageServlet state =loadTree
14:54:05 INFO [http-8080-1] MenuManageServlet - MenuManageServlet treeDataFile = treeData.xml,treeData_sc.xml
14:54:05 INFO [http-8080-1] MenuManageServlet - fileRootPath =/E:/tools/Tomcat6.0/lib/
14:54:05 ERROR [http-8080-1] MenuManageServlet - java.lang.NullPointerException
java.lang.NullPointerException
at com.zznode.tnms.common.web.menu.MenuTreeReader.parseXML2JSONArrayByAccessPorts(MenuTreeReader.java:54)
at com.zznode.tnms.common.web.menu.MenuManageServlet.service(MenuManageServlet.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:216)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:195)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)于是我根据出现问题的地方,查找。
先在web.xml文件找到MenuManageServlet,如下:
<servlet>
<servlet-name>menu</servlet-name>
<servlet-class>com.zznode.tnms.common.web.menu.MenuManageServlet</servlet-class>
<init-param>
<param-name>treeData</param-name>
<param-value>treeData.xml,treeData_sc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>menu</servlet-name>
<url-pattern>/menu</url-pattern>
</servlet-mapping>
从而找到MenuManageServlet.java文件,
在service方法里,找到
List fileNameList = getFilePath();
于是查看getFilePath方法,如下:
String fileRootPath = getClass().getResource("/").getPath();
String treeDataFile = getInitParameter("treeData");
logger.info("MenuManageServlet treeDataFile = " + treeDataFile);这是对的,
接着是logger.info(" fileRootPath =" + fileRootPath);
这句话就是刚刚在控制台上输出的“MenuManageServlet - fileRootPath =/E:/tools/Tomcat6.0/lib/”。
问题:而这个文件是在{pro-root-path}\webapp\WEB-INF\classes下,为什么eclipse去“/E:/tools/Tomcat6.0/lib/”去寻找这两个文件?求有类似经历的大神解惑?分数不多,但敬意是满满的。java
14:54:05 INFO [http-8080-1] MenuManageServlet - MenuManageServlet state =loadTree
14:54:05 INFO [http-8080-1] MenuManageServlet - MenuManageServlet treeDataFile = treeData.xml,treeData_sc.xml
14:54:05 INFO [http-8080-1] MenuManageServlet - fileRootPath =/E:/tools/Tomcat6.0/lib/
14:54:05 ERROR [http-8080-1] MenuManageServlet - java.lang.NullPointerException
java.lang.NullPointerException
at com.zznode.tnms.common.web.menu.MenuTreeReader.parseXML2JSONArrayByAccessPorts(MenuTreeReader.java:54)
at com.zznode.tnms.common.web.menu.MenuManageServlet.service(MenuManageServlet.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:216)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:195)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)于是我根据出现问题的地方,查找。
先在web.xml文件找到MenuManageServlet,如下:
<servlet>
<servlet-name>menu</servlet-name>
<servlet-class>com.zznode.tnms.common.web.menu.MenuManageServlet</servlet-class>
<init-param>
<param-name>treeData</param-name>
<param-value>treeData.xml,treeData_sc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>menu</servlet-name>
<url-pattern>/menu</url-pattern>
</servlet-mapping>
从而找到MenuManageServlet.java文件,
在service方法里,找到
List fileNameList = getFilePath();
于是查看getFilePath方法,如下:
String fileRootPath = getClass().getResource("/").getPath();
String treeDataFile = getInitParameter("treeData");
logger.info("MenuManageServlet treeDataFile = " + treeDataFile);这是对的,
接着是logger.info(" fileRootPath =" + fileRootPath);
这句话就是刚刚在控制台上输出的“MenuManageServlet - fileRootPath =/E:/tools/Tomcat6.0/lib/”。
问题:而这个文件是在{pro-root-path}\webapp\WEB-INF\classes下,为什么eclipse去“/E:/tools/Tomcat6.0/lib/”去寻找这两个文件?求有类似经历的大神解惑?分数不多,但敬意是满满的。java
解决方案 »
- Tomcat 挂载 BoneCP, 如何配置?
- sql2000安装 新手求救
- 又出InvocationTargetException错误
- 关于<TD class=talbecontent1>南京 </TD>的修改问题
- 一个非常奇怪的JSP提交表单的问题,大家帮看看
- JSP中的JavaBean返回resultset的问题
- 各位前辈,哪里下载“汤姆猫”?
- 怎么处理textarea中提交的字符,比如回车等!
- 感谢sparkwu(吳府明)多次用短消息帮助我用JDBC连接数据库!快进来回复这个贴子
- jsp+oracle的问题!
- 使用c3p0连接池还是weblogic连接池(SSH应用)
- Eclipse Juno如何配置才能运行servlet
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="resources/cfg"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="pm_core/src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="E:/code/java/myeclipse/pm/pmlib/acegi-security-1.0.0.jar"/>
<classpathentry kind="lib" path="E:/code/java/myeclipse/pm/pmlib/activation-1.1.jar"/>
<classpathentry kind="lib" path="E:/code/java/myeclipse/pm/pmlib/ajaxanywhere-1.2.jar"/>
<classpathentry kind="lib" path="E:/code/java/myeclipse/pm/pmlib/antlr-2.7.6.jar"/>
<classpathentry kind="lib" path="E:/code/java/myeclipse/pm/pmlib/aopalliance-1.0.jar"/>
//...引入jar配置略
<classpathentry kind="output" path="bin"/>
</classpath>
里面没有将编译目录设为“E:/tools/Tomcat6.0/lib”,而是设为<classpathentry kind="output" path="bin"/>
奇怪的是,我换了一个tomcat就好使了。