2013-07-12 3 views
1

Это мое первое приложение Struts 2 и я получил эту ошибкуПрименение в контексте пути/HelloWorldStruts2 не может быть запущен

"Application at context path `/HelloWorldStruts2` could not be started" 

при развертывании на сервере Tomcat.

web.xml моего приложения:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
id="WebApp_ID" version="3.0"> 

<display-name>Struts 2</display-name> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
<filter> 
<filter-name>struts2</filter-name> 
<filter-class> 
org.apache.struts2.dispatcher.FilterDispatcher 
</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
</web-app> 

struts.xml моего приложения распорок:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
<constant name="struts.devMode" value="true" /> 
<package name="helloworld" extends="struts-default"> 

<action name="hello" 
    class="com.tutorialspoint.struts2.HelloWorldAction" 
    method="execute"> 
    <result name="success">/HelloWorld.jsp</result> 
</action> 
</package> 
</struts> 
+0

Что находится в журнале сервера? Какие библиотеки вы развертываете? –

+0

Возможно, вы используете старый фильтр: http://stackoverflow.com/a/17103563/1654265 –

+0

О, а какая версия S2? Как упоминает Андреа, это устаревший фильтр, хотя он, вероятно, должен работать. –

ответ

0

При развертывании веб-приложения Tomcat он будет пытаться создать контекст приложения, указанный при развертывании после обработки web.xml. Если у вас есть ошибки в веб-приложении, он может не запускаться, а контекст не создается. Вам необходимо устранить эти ошибки и перераспределить ваше приложение. Возможно, у вас неправильная конфигурация, использующая устаревший API, неправильные версии библиотек и непоследовательные зависимости, другие проблемы с сервером. Трудно сказать вам, что произошло, и почему ваше приложение не запущено. Но, предоставляя полную стекцию, конфигурация проекта может помочь в устранении этой проблемы. Ниже приведено решение другой проблемы, которая находится в вашем коде проекта, которая может отсутствовать или уже разрешена, но не показана в вашем коде. Это помогает запустить веб-приложение в браузере в контексте /HelloWorldStruts2 после того, как этот контекст зарегистрирован в webapp.

В index.jsp вы должны поместить

<% response.sendRedirect("hello.action"); %> 
+1

Я не думаю, что это не приведет к тому, что контейнер приложения не будет запускать веб-приложение. –

+0

@DaveNewton Без журналов он не может быть запущен, но после запуска не удалось запустить в контексте '/ HelloWorldStruts2'. –

+1

... OP только заявляет, что приложение не может быть запущено. –

0

Я думаю, что проблема в версии 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"> 

    <display-name>Struts 2</display-name> 

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 


    <filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

</web-app> 
Смежные вопросы