Tomcat无法解析'<%@ include file',可能与taglibs JasperException有关:找不到文件

时间:2009-11-18 21:32:08

标签: java apache jsp tomcat

在jsp中我有:

<%@ include file="/assets/includes/inc_standard_init.jsp" %>

在浏览器中我得到:

org.apache.jasper.JasperException: /oprs.jsp(1,1) File "/assets/includes/inc_standard_init.jsp" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) ...

我已经尝试了几个版本的路径,包括../assets,.. / .. / assets等。奇怪的是我在主要开发环境中没有这个问题,只有当我尝试过移动到另一台计算机。我已经比较了httpd.conf和server.xml文件,但我无法找到环境之间的任何差异。最终我认为这是Apache 2.2.14或Tomcat 5.5.27配置中的配置问题。

此外,当我转到http://localhost/assets/includes/inc_standard.jsp时,我收到此错误:

org.apache.jasper.JasperException: File "/WEB-INF/tld/siteuser.tld" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116) ...     

显然我不能直接访问/ WEB-INF的内容。我不知道这是如何在一个环境中工作而不是在另一个环境中工作。任何想法?

/ WEB-INF / lib中:

acosog_utils.jar
activation.jar
ant-antlr-1.6.5.jar
antlr-2.7.6.jar
app.jar
asm-attrs.jar
asm.jar
autoform-ext.jar
autoform.jar
axis-ant.jar
axis-schema.jar
axis.jar
catalina-ant.jar
catalina-deployer.jar
cglib-2.1.3.jar
classes12.jar
commons-codec-1.3.jar
commons-collections-2.1.1.jar
commons-collections-3.0.jar
commons-collections.jar
commons-dbcp.jar
commons-dbutils-1.0.jar
commons-discovery-0.2.jar
commons-el.jar
commons-httpclient-3.1.jar
commons-logging-1.0.4.jar
commons-logging-1.1.1.jar
commons-logging.jar
commons-pool.jar
dom4j-1.6.1.jar
domain.jar
ehcache-1.1.jar
ehcache-1.2.3.jar
examples.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate3.jar
ibatis-2.3.0.677.jar
jakarta-regexp-1.2.jar
jasper-compiler.jar
jasper-runtime.jar
jaxrpc.jar
jms.jar
jsp-api.jar
jstl.jar
jta.jar
junit.jar
kjdk.jar
log4j-1.2.11.jar
log4j.properties
mail.jar
mysql-connector-java-3.1.10-bin.jar
naming-common.jar
naming-factory.jar
naming-resources.jar
ojdbc14_g.jar
oracle_8.1.7.1_classes12.jar
portlet-api.jar
quartz-all-1.6.5.jar
RandoNode.jar
resolver.jar
saaj.jar
serializer.jar
servlet-api.jar
servlet.jar
siteuser.jar
spring-orm.jar
spring-web.jar
spring-webmvc-portlet.jar
spring-webmvc.jar
spring.jar
standard.jar
tools.jar
velocity-1.4.jar
velocity-dep-1.4.jar
wsdl4j-1.5.1.jar
xerces.jar
xercesImpl.jar
xml-apis.jar
xml.jar
xmlparserv2.jar

Apache的Tomcat的5.5.27 /普通/ lib中:

commons-el.jar
jasper-compiler-jdt.jar
jasper-compiler.jar
jasper-runtime.jar
jsp-api.jar
naming-factory-dbcp.jar
naming-factory.jar
naming-resources.jar
servlet-api.jar
standard.jar

Apache的Tomcat的5.5.27 /服务器/ lib中:

catalina-ant-jmx.jar
catalina-ant.jar
catalina-cluster.jar
catalina-optional.jar
catalina-storeconfig.jar
catalina.jar
commons-modeler-2.0.1.jar
servlets-cgi.renametojar
servlets-default.jar
servlets-invoker.jar
servlets-ssi.renametojar
servlets-webdav.jar
standard.jar
tomcat-ajp.jar
tomcat-apr.jar
tomcat-coyote.jar
tomcat-http.jar
tomcat-jkstatus-ant.jar
tomcat-util.jar

1 个答案:

答案 0 :(得分:1)

第一步是从WEB-INF/lib中删除所有特定于应用服务器的JAR。这包括servlet-api.jarservlet.jar。他们只能在appserver的类路径中使用JAR,并使您的webapp完全不可移植。

您永远不应将任何特定于应用程序服务器的JAR文件移动/复制到其默认位置之外。您可以向其添加另一个特定于Web应用程序的JAR,以便它们在appserver的资源管理所需的所有Web应用程序或任何JAR之间共享(例如,数据源的JDBC驱动程序),但仅此而已。< / p>

同时确保JRE/lib以默认方式保持默认。你不应该添加任何第三方JAR。