java - Dynamic Web Application runs with Eclipse but not in Tomcat -


i have been working on small application, learning exercise.

i have been introducing new things in stages. had working adding struts 2.

now, trying add tiles , keep having problems. if right click on project , "run as" -> "run on server" run expected.

if deploy application war file local tomcat instance deploy ok when try access application fails illegalargumentexception in tiles definition file.

i have maven resources in web-inf/lib directory. there still must missing when export war file. i've reviewed log files , can't see difference. server configured in eclipse points same server running separately. tomcat v7.0.70.

here output when try access webpage:

struts problem report  struts has detected unhandled exception: messages:         illegal character in path @ index 13: file:///c:/my programs/apache-tomcat-7.0.70/webapps/teaminfo/web-inf/classes/tiles-def.xml     illegal character in path @ index 13: file:///c:/my programs/apache-tomcat-7.0.70/webapps/teaminfo/web-inf/classes/tiles-def.xml 

stacktraces

java.lang.illegalargumentexception: illegal character in path @ index 13: file:///c:/my programs/apache-tomcat-7.0.70/webapps/teaminfo/web-inf/classes/tiles-def.xml      java.net.uri.create(unknown source)     org.apache.struts2.tiles.strutswildcardservletapplicationcontext.getresource(strutswildcardservletapplicationcontext.java:105)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loadrawdefinitionsfromresources(cachinglocaleurldefinitiondao.java:232)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loadrawdefinitionsfromresources(cachinglocaleurldefinitiondao.java:225)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loadrawdefinitionsfromresources(cachinglocaleurldefinitiondao.java:225)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loaddefinitionsfromresources(cachinglocaleurldefinitiondao.java:203)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loaddefinitions(cachinglocaleurldefinitiondao.java:192)         org.apache.tiles.definition.dao.resolvinglocaleurldefinitiondao.loaddefinitions(resolvinglocaleurldefinitiondao.java:68)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.checkandloaddefinitions(cachinglocaleurldefinitiondao.java:174)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.getdefinitions(cachinglocaleurldefinitiondao.java:131)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.getdefinition(cachinglocaleurldefinitiondao.java:105)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.getdefinition(cachinglocaleurldefinitiondao.java:49)         org.apache.tiles.definition.unresolvinglocaledefinitionsfactory.getdefinition(unresolvinglocaledefinitionsfactory.java:89)         org.apache.tiles.impl.basictilescontainer.getdefinition(basictilescontainer.java:286)         org.apache.tiles.impl.basictilescontainer.isvaliddefinition(basictilescontainer.java:273)         org.apache.tiles.tilescontainerwrapper.isvaliddefinition(tilescontainerwrapper.java:88)         org.apache.tiles.impl.mgmt.cachingtilescontainer.isvaliddefinition(cachingtilescontainer.java:100)         org.apache.struts2.views.tiles.tilesresult.doexecute(tilesresult.java:139)         org.apache.struts2.result.strutsresultsupport.execute(strutsresultsupport.java:208)         com.opensymphony.xwork2.defaultactioninvocation.executeresult(defaultactioninvocation.java:366)         com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:270)         com.opensymphony.xwork2.interceptor.logginginterceptor.intercept(logginginterceptor.java:68)         com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:240)         com.opensymphony.xwork2.interceptor.timerinterceptor.intercept(timerinterceptor.java:121)         com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:240)         org.apache.struts2.factory.strutsactionproxy.execute(strutsactionproxy.java:54)         org.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:556)         org.apache.struts2.dispatcher.executeoperations.executeaction(executeoperations.java:81)         org.apache.struts2.dispatcher.filter.strutsprepareandexecutefilter.dofilter(strutsprepareandexecutefilter.java:113)         org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)         org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)         org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:218)         org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122)         org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:505)         org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:169)         org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)         org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:956)         org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)         org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:442)         org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1082)         org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:623)         org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2517)         org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2506)         java.util.concurrent.threadpoolexecutor.runworker(unknown source)         java.util.concurrent.threadpoolexecutor$worker.run(unknown source)         org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)         java.lang.thread.run(unknown source)   java.net.urisyntaxexception: illegal character in path @ index 13: file:///c:/my programs/apache-tomcat-7.0.70/webapps/teaminfo/web-inf/classes/tiles-def.xml          java.net.uri$parser.fail(unknown source)         java.net.uri$parser.checkchars(unknown source)         java.net.uri$parser.parsehierarchical(unknown source)         java.net.uri$parser.parse(unknown source)         java.net.uri.<init>(unknown source)         java.net.uri.create(unknown source)         org.apache.struts2.tiles.strutswildcardservletapplicationcontext.getresource(strutswildcardservletapplicationcontext.java:105)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loadrawdefinitionsfromresources(cachinglocaleurldefinitiondao.java:232)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loadrawdefinitionsfromresources(cachinglocaleurldefinitiondao.java:225)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loadrawdefinitionsfromresources(cachinglocaleurldefinitiondao.java:225)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loaddefinitionsfromresources(cachinglocaleurldefinitiondao.java:203)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.loaddefinitions(cachinglocaleurldefinitiondao.java:192)         org.apache.tiles.definition.dao.resolvinglocaleurldefinitiondao.loaddefinitions(resolvinglocaleurldefinitiondao.java:68)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.checkandloaddefinitions(cachinglocaleurldefinitiondao.java:174)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.getdefinitions(cachinglocaleurldefinitiondao.java:131)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.getdefinition(cachinglocaleurldefinitiondao.java:105)         org.apache.tiles.definition.dao.cachinglocaleurldefinitiondao.getdefinition(cachinglocaleurldefinitiondao.java:49)         org.apache.tiles.definition.unresolvinglocaledefinitionsfactory.getdefinition(unresolvinglocaledefinitionsfactory.java:89)         org.apache.tiles.impl.basictilescontainer.getdefinition(basictilescontainer.java:286)         org.apache.tiles.impl.basictilescontainer.isvaliddefinition(basictilescontainer.java:273)         org.apache.tiles.tilescontainerwrapper.isvaliddefinition(tilescontainerwrapper.java:88)         org.apache.tiles.impl.mgmt.cachingtilescontainer.isvaliddefinition(cachingtilescontainer.java:100)         org.apache.struts2.views.tiles.tilesresult.doexecute(tilesresult.java:139)         org.apache.struts2.result.strutsresultsupport.execute(strutsresultsupport.java:208)         com.opensymphony.xwork2.defaultactioninvocation.executeresult(defaultactioninvocation.java:366)         com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:270)         com.opensymphony.xwork2.interceptor.logginginterceptor.intercept(logginginterceptor.java:68)         com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:240)         com.opensymphony.xwork2.interceptor.timerinterceptor.intercept(timerinterceptor.java:121)         com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:240)         org.apache.struts2.factory.strutsactionproxy.execute(strutsactionproxy.java:54)         org.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:556)         org.apache.struts2.dispatcher.executeoperations.executeaction(executeoperations.java:81)         org.apache.struts2.dispatcher.filter.strutsprepareandexecutefilter.dofilter(strutsprepareandexecutefilter.java:113)         org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)         org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)         org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:218)         org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122)         org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:505)         org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:169)         org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)         org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:956)         org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)         org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:442)         org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1082)         org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:623)         org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2517)         org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2506)         java.util.concurrent.threadpoolexecutor.runworker(unknown source)         java.util.concurrent.threadpoolexecutor$worker.run(unknown source)         org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) j   ava.lang.thread.run(unknown source)   seeing page because development mode enabled. development mode, or devmode, enables debugging behaviors , reports assist developers. disable mode, set: 
struts.devmode=false  in web-inf/classes/struts.properties file. 

this web.xml

<?xml version="1.0" encoding="utf-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name>team info</display-name>  <context-param>     <param-name>contextconfiglocation</param-name>     <param-value>/web-inf/classes/config/springbeans.xml</param-value> </context-param> <context-param>     <param-name>islog4jautoinitializationdisabled</param-name>     <param-value>true</param-value> </context-param>     <context-param>     <param-name>tilesdefinitions</param-name>     <param-value>/web-inf/classes/tiles-def.xml</param-value>     </context-param>  <listener>     <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <listener>    <listener-class>org.apache.struts2.tiles.strutstileslistener</listener-class>     </listener>  <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.dispatcher.filter.strutsprepareandexecutefilter</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="default" namespace="/" extends="struts-default">          <result-types>             <result-type name="tiles" class="org.apache.struts2.views.tiles.tilesresult" />         </result-types>          <interceptors>             <interceptor name="authentication" class="com.teaminfo.interceptors.authenticationinterceptor" />             <interceptor-stack name="authstack">                 <interceptor-ref name="timer" />                 <interceptor-ref name="logger" />                 <interceptor-ref name="authentication" />                 <interceptor-ref name="defaultstack" />             </interceptor-stack>         </interceptors>          <default-interceptor-ref name="authstack" />          <default-action-ref name="dashboard" />          <global-results>             <result name="need_login" type="tiles">login</result>             <result name="exception">/jsp/error.jsp</result>         </global-results>          <global-exception-mappings>             <exception-mapping exception="java.lang.exception" result="exception" />         </global-exception-mappings>          <action name="login" class="com.teaminfo.action.loginaction">             <interceptor-ref name="defaultstack" />             <result name="success" type="redirectaction">dashboard</result>             <result name="input" type="tiles">login</result>         </action>         <action name="dashboard" class="com.teaminfo.action.dashboard">             <result name="manager" type="tiles">manager</result>             <result name="associate" type="tiles">associate</result>         </action>     </package>  </struts> 

tiles config

<?xml version="1.0" encoding="utf-8" ?>  <!doctype tiles-definitions public      "-//apache software foundation//dtd tiles configuration 2.0//en"      "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">  <tiles-definitions>     <definition name="maintemplate" template="/jsp/layout.jsp">             <put-attribute name="title"  value="team info" />             <put-attribute name="header" value="/jsp/header.jsp" />             <put-attribute name="menu" value="/jsp/menu.jsp" />             <put-attribute name="body"   value="/jsp/body.jsp" />             <put-attribute name="footer"   value="/jsp/footer.jsp" />      </definition>       <definition name="login" extends="maintemplate">         <put-attribute name="title" value="team info login" />         <put-attribute name="menu" value="/jsp/menu.jsp" />         <put-attribute name="body" value="/jsp/login.jsp" />      </definition>       <definition name="admin" extends="maintemplate">         <put-attribute name="title" value="team info admin" />         <put-attribute name="menu" value="/jsp/admin/menu.jsp" />         <put-attribute name="body" value="/jsp/admin/body.jsp" />      </definition>       <definition name="manager" extends="maintemplate">         <put-attribute name="title" value="team info manager" />         <put-attribute name="menu" value="/jsp/manager/menu.jsp" />         <put-attribute name="body" value="/jsp/manager/body.jsp" />      </definition>       <definition name="associate" extends="maintemplate">         <put-attribute name="title" value="team info manager" />         <put-attribute name="menu" value="/jsp/associate/menu.jsp" />         <put-attribute name="body" value="/jsp/associate/body.jsp" />      </definition>  </tiles-definitions> 

it doesn't space in path. space should changed %20 in case. use replaceall(" ","%20");

otherwise, can use encoding using urlencoder.

string pathoffile = "file:///c:/my programs/apache-tomcat-7.0.70/webapps/teaminfo/web-inf/classes/tiles-def.xml"; pathoffile = urlencoder.encode(pathoffile, "utf-8");  

update1:

for tiles, can replace param value below

    <param-value>       /web-inf/tiles-defs.xml,/org/apache/tiles/classpath-defs.xml     </param-value> 

instead of

<param-value>/web-inf/classes/tiles-def.xml</param-value> 

for more, can go through this tutorial.


Comments