org.apache.jasper.JasperException: File "/WEB-INF/struts-html.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)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:160)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:494)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:160)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:494)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
如果不全,则需要从\jakarta-struts-1.1\lib\中,把全部*.tld文件copy至\StrutsWeb\WEB-INF\中。
然后重新启动Apache Tomcat,看看效果如何。
*.tld是标签库描述器文件,它们描述了多个struts标记库中的自定义标签。*2*.如果确认struts项目的标签文件配置无误,那么,在一般情况下,是需要把struts项目的这个WEB应用在Tomcat的服务应用中单独描述出来,
即需修改TOMAT_HOME\conf\server.xml文件,在server.xml中找到如下行:<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->然后在其下面加上这句:<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>保存server.xml,然后重新启动Apache Tomcat,这样就可以访问这个WEB应用了。可是我的server.xml根本就找不到他说的那段代码?!晕,这是怎么回事?!
# re: 救命~请问是什么原因?!! 2007-05-10 11:37 糖果找到了!我明白是怎么回事了!
我的一个文件夹是用中文命名,在IE输入地址后老是显示404错误,找不到文件。
后来我改成英文以后就没有出现过这种错误了。
打开server.xml也找到了<Context>它的path和docBase以及docBase里面全是乱码,改正以后就再也没有出现过404问题。
现在还是“org.apache.jasper.JasperException: File "/WEB-INF/struts-bean.tld" not found”正在解决中.....
或者你把uri的路径写对 就没问题了
<taglib-uri>/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>但是你的WEB-INF目录下没有struts-html.tld,要不是你没有这个文件,就是你放的位置不对
仔细检查一下
试试看导入一下
很明显的错误!
如果没有检查struts-html.tld 这个文件到底在什么位置
然后到web.xml 中 <taglib-location> 的值改一下
<taglib>
<taglib-uri>xxx</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
struts-html.tld是标签文件,你把这个文件放到WEB-INF文件夹下
然后重启应用服务器就可以了
2、需要在web.xml 进行配置,通知Tomcat如何去找struts-html.tld,否则就是有整个文件找不到也是不行的。即需包含类似下面的代码
<taglib>
<taglib-uri>/WEB-INF/tld/struts-html</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
</taglib>
<taglib-location>就是说明该文件的位置,应与1的目录及文件名一致
3、在jsp页面上使用时,文件头部需有类似下行的代码,指示html标签在哪个lib文件中定义
<%@ taglib uri="/WEB-INF/tld/struts-html" prefix="html" %>
这里的uri要与第2点中的uri一致另外,在这里(jsp页面上)也可以直接指定标签文件,如
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
就行了。
exception org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:156)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:620)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.ClassNotFoundException: org.apache.jsp.GuessNumber.guess_jsp
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:618)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)谢谢高手帮我看哈,分可以继续加
把那个jsp帖出来看看...
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
把/WEB-INF/中前面的 斜线去掉就解决了一个问题,还一个就是WEB-INF/lib应该房有.jar文件.
哪位能帮我讲解哈path中斜线的作用
说文件struts-html.tld 在WEB-INF下没有找到,这是Struts的标签,
你先包有没, 看文件有没有, 再看配置配了吗?
<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html" %>,写得对不对,不对的话,进页面报错。
servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要 forwarder到a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。sendRedirect:/代表ip在jsp中的“/”表示的根为“ip”<jsp:include page = "url" flush="true"/>
<%@ include file="url" %>
<%@ page errorPage = "url" %>时,
这里url使用的“/”表示的根为“ip/war/”2、客户端的地址html中的相对地址都是相对于 ip 的Html中的form表单的action属性的地址应该是相对于 ip 的,所以,如果提交到a.jsp为:action=”/webapp/user/a.jsp”;提交到servlet为action=”/webapp/handleservlet”javascript也是在客户端解析的,所以其相对路径和form表单一样。3、站点根目录和css路径问题我们称类似这样的相对路径/webapp/….为相对于站点根目录的相对路径。当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forwarder这个 jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。所以这时候不能在jsp中用这样的路径:或者类似href=\"one.css\"和../../one.css的html相对路径是相对于引用这个css的文件的相对路径。而在servlet中转发时就是相对于这个servlet的相对路径了,因为jsp路径和servlet路径是不一样的,所以这样的引用肯定是出错的。所以这个时候,要用站点根目录,就是相对于http://192.168.0.1/的目录,以“/”开头。因此上述错误应更正为href=”/webapp/one.css”类似的站点根目录的相对目录。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。
4 为了避免jsp跳jsp,servlet跳jsp,forward方式跳转,sendRedirect跳转产生的路径问题,
对于jsp和使用sendRedirect跳转的servlet,采用直接使用带
容器路径[String request.getContextPath()]的绝对路径就可以彻底解决,即:
1)<%
String contextPath = request.getContextPath();
String url = contextPath + /user/login.jsp";
%>
<a href="<%=url%>"> login</a>
2) ....
String contextPath = request.getContextPath();
String targetPath = contextPath + "/user/login.jsp";
RequestDispatcher rd = request.getRequestDispatcher(targetPath);
rd.forward(request, response);
...... 对于使用forward跳转的servlet,则不要加容器路径,否则就重复出现 容器路径