Tomcat7 WEB-INF/lib 目录不起作用
Posted
技术标签:
【中文标题】Tomcat7 WEB-INF/lib 目录不起作用【英文标题】:Tomcat7 WEB-INF/lib directory doesen't work 【发布时间】:2013-07-25 01:54:38 【问题描述】:我是 jsp 页面的新手,就在昨天我开了一个类似的讨论。 这可能是重复的或非常相似的,我很抱歉是否是这种情况,但是我正在开发 jsp 页面只有几天,我还不明白环境、文件夹等是如何的“链接在一起。
我在 Apache Tomcat 7 上遇到以下错误
HTTP Status 500 - The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
因为我包含了这个taglib
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
然后,我在“WEB-INF”文件夹中创建了一个文件夹“lib”,并将文件 jstl-1-2.jar 放在那里。 一位用户建议从这里进入另一个讨论 The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application 删除 standard.jar 但我从来没有类似的文件。
在网上读书和冲浪,我在Tomcat 7中读到应该足以将jstl-1-2.jar放入WEB-INF/lib文件夹如下所示,但无论有无该文件,都没有任何反应。错误没有改变。
/var/lib/tomcat7/webapps/jsp_test/web/WEB-INF/lib/jstl-1-2.jar
这是文件夹三:
- webapps - ROOT - index.html
- META-INF - context.xml
- jsp_test - nbproject
- src - conf - MANIFEST.MF
- java - mypack - Display.java
- web - ROOT - index.jsp
- WEB-INF - lib -jstl-1.2.jar
- web.xml
- beans.xml
我还注意到,tomcat 7 文件夹中还有另一个 web.xml 文件:
/etc/tomcat7/web.xml
我是否必须更改两个 web.xml 文件中的某些内容?
此外,查看 tomcat7-example 文件夹中有一个 web.xml 文件,其中许多库都以 .tld 扩展名编写:
/usr/share/tomcat7-examples/examples/WEB-INF/web.xml
我为这个愚蠢的事情迷路了,请帮助我! :)
【问题讨论】:
【参考方案1】:我想我刚刚解决了这个问题。
希望它对某人有用,下面是我的解决方案。
我删除了旧项目,并在与 webapps 相同级别的名为“tsp_test”的新目录中创建了一个新项目。
在server.xml中设置新主机后,我为项目建立了一个新的文件夹结构:
- tomcat7 - jsp_test - conf
- java - mypack - Display.java
- test
- ROOT - META-INF - context.xml
- WEB-INF - web.xml
- lib - jstl-1.2.jar
- index.jsp
现在我遇到了另一个与 taglib 问题无关的错误:
HTTP Status 500 - Unable to compile class for JSP
我认为这可能是因为一些类错误。
感谢您的帮助!
【讨论】:
【参考方案2】:就像 duffymo 所说的 je webapp 结构应该是这样的: 请注意,我还删除了“jsp_test”下的“ROOT”目录,不确定您添加此目录的原因。您现在可以直接从域的根目录访问您的 index.jsp。
- webapps - ROOT - index.html
- META-INF - context.xml
- jsp_test - index.jsp
- WEB-INF - lib -jstl-1.2.jar
- web.xml
- beans.xml
我很好奇您使用什么 url 访问 index.jsp 以获取 500 错误?
类似'http://yourdomain.net/jsp_test/web/ROOT/index.jsp'的东西?
现在访问 index.jsp 的 url 应该如下所示:'http://yourdomain.net/jsp_test/index.jsp'
我不知道您是否在 tomcat 中为您的应用程序配置了上下文根,但如果您这样做并将其映射到“jsp_test”,则 url 变为:“http://yourdomain.net/index.jsp”
如果你只是在用你的tomcat webserver开发一个开发环境,那么将你的应用程序放在tomcat的ROOT webapp中也很方便。只需摆脱当前的 ROOT webapp 并将其替换为您的,因此您的结构将如下所示:
- webapps - ROOT - index.jsp
- WEB-INF - lib -jstl-1.2.jar
- web.xml
- beans.xml
【讨论】:
非常感谢您的快速回复。我会尝试你的解决方案,让你更新它。关于网址,我在 server.xml 文件中配置了一个新主机,然后我转到 jsp.test:8080 显然我在本地环境中:) 如果您使用ROOT webapp,则无需配置server.xml,您可以通过127.0.0.1:8080访问您的应用程序 是的,我知道,但我对 server.xml 配置没有任何问题,事实上它在我设置的本地域上运行良好 您根本不需要接触 webapps/ROOT 或修改 server.xml。您需要做的就是创建一个适当的 WAR 文件并将其放在 /webapps 下。任何其他都是错误的答案。【参考方案3】:请浏览网址内容:https://***.com/tags/jstl/info。它可能会帮助您解决问题。
【讨论】:
【参考方案4】:您需要学习如何在 Tomcat 上正确创建和部署 Web 应用程序。
删除 /jsp_test
根目录下的 /web
文件夹。您应该只在根目录下拥有 /WEB-INF
及其子项。
【讨论】:
以上是关于Tomcat7 WEB-INF/lib 目录不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作
使用 Eclipse/Tomcat 自动将 3rd 方 jars 添加到 WEB-INF/lib
将 JAR 添加到 IntelliJ 中的 WEB-INF/lib 目录的正确过程是啥
如何签署放置在 maven 中 /WEB-INF/lib 目录中的 JAR 文件