Java Tomcat 8.5、Netbeans 11.2异常启动过滤器
当我使用Java 8、Tomcat 8、Netbeans 8运行web应用程序时,它运行得非常好。使用Netbeans 11运行相同的应用程序时,会出现以下错误,即使Netbeans 11中仍然是Java 8、Tomcat 8 这是tomcat错误日志Java Tomcat 8.5、Netbeans 11.2异常启动过滤器,java,tomcat,netbeans,Java,Tomcat,Netbeans,当我使用Java 8、Tomcat 8、Netbeans 8运行web应用程序时,它运行得非常好。使用Netbeans 11运行相同的应用程序时,会出现以下错误,即使Netbeans 11中仍然是Java 8、Tomcat 8 这是tomcat错误日志 Mar 05, 2020 9:30:40 AM org.apache.catalina.core.StandardContext filterStart SEVERE: Exception starting filter DatabaseChec
Mar 05, 2020 9:30:40 AM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter DatabaseCheckFilter
java.lang.RuntimeException:
at filters.DatabaseCheckFilter.<init>(DatabaseCheckFilter.java:1)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:424)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
下面是web.xml的摘录
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>UserInfoFilter</filter-name>
<filter-class>filters.UserInfoFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserInfoFilter</filter-name>
<url-pattern>/scheduler.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>DatabaseCheckFilter</filter-name>
<filter-class>filters.DatabaseCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DatabaseCheckFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
用户信息过滤器
filters.UserInfoFilter
用户信息过滤器
/scheduler.jsp
数据库检查过滤器
filters.DatabaseCheckFilter
数据库检查过滤器
/*
Netbeans 11+版本解决了此问题。运行刚刚发布的Netbeans 11.3修复了此问题。您确定stacktrace不会以“原因:”继续,显示失败的真正原因吗?--另外,您能否显示DatabaseCheckFilter
的代码?如果没有DatabaseCheckFilter
类的源代码,很难说什么。该类看起来是您的类,而不是内置的Java类或来自常用库的类。我能想到的最好的猜测是,这个类中有一个类似于以下内容的catch块:catch(异常e){throw new RuntimeException(e.getMessage();}
,这个catch块正在捕获NullPointerException,我已经添加了完整的堆栈跟踪以及类和web.xml文件中的代码。请确保您的.war文件中没有附带一些非常旧的servlet-api.jar。更好的方法是:使用最新tomcat发行版中的servlet-api.jar来编译web应用程序,或者使用一些相对现代的版本
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>UserInfoFilter</filter-name>
<filter-class>filters.UserInfoFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserInfoFilter</filter-name>
<url-pattern>/scheduler.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>DatabaseCheckFilter</filter-name>
<filter-class>filters.DatabaseCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DatabaseCheckFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>