TomcatFileNotFoundException - wendysmoak/wiki GitHub Wiki
== Problem ==
Webapps that work fine on Windows fail on HP-UX with this in the webapp log file:
14:23:17,696 - DEBUG org.apache.struts.action.ActionServlet - Initializing module path '' plug ins
14:23:17,725 - INFO org.apache.struts.validator.ValidatorPlugIn - Loading validation rules file from '/WEB-INF/validator-rules.xml'
14:23:17,726 - INFO org.apache.struts.validator.ValidatorPlugIn - Loading validation rules file from '/WEB-INF/validation.xml'
14:23:17,864 - ERROR org.apache.struts.validator.ValidatorPlugIn - JAR entry org/apache/commons/validator/resources/validator_1_1_3.dtd not found in opt/hpws/tomcat/webapps/bentest/WEB-INF/lib/commons-validator.jar
java.io.FileNotFoundException: JAR entry org/apache/commons/validator/resources/validator_1_1_3.dtd not found in /opt/hpws/tomcat/webapps/bentest/WEB-INF/lib/commons-validator.jar
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:97)
at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:107)
at java.net.URL.openStream(URL.java:913)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1591)
at org.apache.commons.validator.ValidatorResources.<init>(ValidatorResources.java:159)
at org.apache.struts.validator.ValidatorPlugIn.initResources(ValidatorPlugIn.java:237)
at org.apache.struts.validator.ValidatorPlugIn.init(ValidatorPlugIn.java:162)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:823)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3427)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3628)
at org.apache.catalina.startup.HostConfig.checkWebXmlLastModified(HostConfig.java:614)
at org.apache.catalina.startup.HostConfig.run(HostConfig.java:854)
at java.lang.Thread.run(Thread.java:534)
The relevant error message is: "JAR entry org/apache/commons/validator/resources/validator_1_1_3.dtd not found in opt/hpws/tomcat/webapps/bentest/WEB-INF/lib/commons-validator.jar"
For some unknown reason, the HP-UX JVM is unable to read that file out of the .jar.
== Solution ==
The solution is to extract the offending file and put it in the proper directory structure under WEB-INF/classes. Things in 'classes' override things in 'lib' so the file is found in 'classes' first and things work again.
In build.xml before building the .war file:
<!-- fix for HP-UX's inability to find this file in the .jar -->
<unjar src="${lib}/commons-validator.jar"
dest="${webinf}/classes">
<patternset>
<include name="**/validator_1_1_3.dtd"/>
</patternset>
</unjar>