Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ Struts 2应用程序启动问题_Java_Jsp_Tomcat_Jdbc_Struts2 - Fatal编程技术网

Java IntelliJ Struts 2应用程序启动问题

Java IntelliJ Struts 2应用程序启动问题,java,jsp,tomcat,jdbc,struts2,Java,Jsp,Tomcat,Jdbc,Struts2,我正在尝试创建一个struts2应用程序。我已经设置了spring、struts和web xml文件。当我省略过滤器“StrutsPrepareAndExecuteFilter”时,它将部署到tomcat服务器,但当我转到一个jsp,其中包含任何类型的struts标记时,我会得到以下错误 以下是堆栈跟踪: Servlet.service() for servlet [jsp] in context with path [] threw exception [An exception occur

我正在尝试创建一个struts2应用程序。我已经设置了spring、struts和web xml文件。当我省略过滤器“StrutsPrepareAndExecuteFilter”时,它将部署到tomcat服务器,但当我转到一个jsp,其中包含任何类型的struts标记时,我会得到以下错误

以下是堆栈跟踪:

Servlet.service() for servlet [jsp] in context with path [] threw exception [An

exception occurred processing JSP page /index.jsp at line 259



Stacktrace:] with root cause
The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]
    at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)
    at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:48)
    at org.apache.jsp.index_jsp._jspx_meth_s_005furl_005f0(index_jsp.java:638)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:320)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run
然后,当我将过滤器放回web.xml文件时,服务器甚至没有部署。当我使用过滤器重新启动服务器时,我得到以下信息:

Connected to server
[2015-07-29 07:55:21,077] Artifact Admin:war exploded: Artifact is being deployed, please wait...
log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Jul 29, 2015 7:55:27 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Jul 29, 2015 7:55:27 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors
Jul 29, 2015 7:55:27 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
[2015-07-29 07:55:27,837] Artifact Admin:war exploded: Error during artifact deployment. See server log for details.
Jul 29, 2015 7:55:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /java/apache-tomcat-7.0.47/webapps/manager
Jul 29, 2015 7:55:31 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  Could not load org.apache.tomcat.jdbc.pool.FairBlockingQueue$FairIterator.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1588)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at org.apache.tomcat.jdbc.pool.FairBlockingQueue.iterator(FairBlockingQueue.java:233)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.checkIdle(ConnectionPool.java:989)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.checkIdle(ConnectionPool.java:981)
    at org.apache.tomcat.jdbc.pool.ConnectionPool$PoolCleaner.run(ConnectionPool.java:1348)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

Exception in thread "PoolCleaner[2142566374:1438221326908]" java.lang.NoClassDefFoundError: org/apache/tomcat/jdbc/pool/FairBlockingQueue$FairIterator
    at org.apache.tomcat.jdbc.pool.FairBlockingQueue.iterator(FairBlockingQueue.java:233)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.checkIdle(ConnectionPool.java:989)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.checkIdle(ConnectionPool.java:981)
    at org.apache.tomcat.jdbc.pool.ConnectionPool$PoolCleaner.run(ConnectionPool.java:1348)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.FairBlockingQueue$FairIterator
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 6 more
这是我的web.xml文件:


上下文配置位置
类路径:/spring.xml,
org.springframework.web.context.ContextLoaderListener
com.howe.listener.InitContextListener
xssFilter
com.howe.Filter.XssFilter
xssFilter
*.jsp
xssFilter
*.做
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
行动包
com.howe.Action
支柱2
/*
login.jsp
400
/error.jsp
404
/error.jsp
500
/error.jsp
503
/error.jsp
504
/error.jsp
java.lang.Throwable
/error.jsp
有人能帮我吗?可能是我项目中JAR的版本吗

这是我的lib文件夹:

如中所述,TomcatJDBC池已在Tomcat7.0.19中引入

既然您还没有指定使用哪个Tomcat版本,那么

  • 如果Tomcat
    <7.0.19
    :您需要将
    Tomcat jdbc.jar
    放在Tomcat共享
    /lib
    文件夹中,而不是像现在这样放在ear/war lib文件夹中

  • 如果Tomcat
    >=7.0.19
    ,jar已经在服务器上,您将获得NoClassDefFoundError,因为您将其放入ear/war中,而Tomcat不知道选择哪一个(在服务器和包之间)

在这两种情况下,您都需要将其从软件包中删除

在Maven中,您可以通过向服务器上已有的依赖项添加
提供的

如中所述,Tomcat 7.0.19中引入了Tomcat JDBC池

既然您还没有指定使用哪个Tomcat版本,那么

  • 如果Tomcat
    <7.0.19
    :您需要将
    Tomcat jdbc.jar
    放在Tomcat共享
    /lib
    文件夹中,而不是像现在这样放在ear/war lib文件夹中

  • 如果Tomcat
    >=7.0.19
    ,jar已经在服务器上,您将获得NoClassDefFoundError,因为您将其放入ear/war中,而Tomcat不知道选择哪一个(在服务器和包之间)

在这两种情况下,您都需要将其从软件包中删除


在Maven中,您可以将提供的
添加到服务器上已有的依赖项中。

Babel是对的。。。。xssFilter有一些我忘记添加的依赖项,在启动时,当构造函数运行时,它无法创建类。日志有点误导,但我发现了!谢谢大家

巴贝尔说得对。。。。xssFilter有一些我忘记添加的依赖项,在启动时,当构造函数运行时,它无法创建类。日志有点误导,但我发现了!谢谢大家

显示你的web.xml和你的lib文件夹我已经添加了你所请求的内容你是否尝试在
web.xml
中隐藏
XSSFilter
配置?很多库不是来自Struts。如果您使用的是Struts,并且存在问题,请确保您具有所有必需的依赖项。不要将服务器库复制到应用程序中,而是对服务器依赖项使用运行时作用域。请发布文本,而不是图像。显示您的web.xml和库文件夹我已经添加了您所请求的ID您尝试在
web.xml
中隐藏
XSSFilter
配置吗?许多库不是来自Struts。如果您使用的是Struts,并且存在问题,请确保您具有所有必需的依赖项。不要将服务器库复制到应用程序中,而是将运行时范围用于服务器依赖项。请张贴文本,而不是图像。还记得在问题中粘贴代码(非图像),并考虑升级到2.3.24,而不是停留在2.3.16.2。更新是更好的。还记得在你的问题中粘贴代码(不是图像),并考虑升级到2.3.24,而不是停留在2.3.16.2。更新的更好。