Tomcat7的WEB-INF/lib目录不起作用。

3

我刚开始接触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 prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

然后,我在“WEB-INF”文件夹下创建了一个名为“lib”的文件夹,并将文件“jstl-1-2.jar”放在其中。 用户建议从这里进入另一个讨论 绝对uri:http://java.sun.com/jsp/jstl/core无法在web.xml或部署此应用程序的jar文件中解析 删除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

我迷失了方向,因为这个愚蠢的东西,请帮助我! :)
4个回答

1
像duffymo所说,你的Web应用程序结构可能应该如下所示: 请注意,我还删除了'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 Web服务器的开发环境中工作,将应用程序放置在Tomcat的ROOT Web应用程序中也非常方便。只需摆脱当前的ROOT Web应用程序并替换为您自己的Web应用程序,这样您的结构将如下所示:

- webapps - ROOT - index.jsp
                 - WEB-INF - lib       -jstl-1.2.jar
                           - web.xml
                           - beans.xml

非常感谢您的快速回复。 我会尝试您的解决方案并让您了解情况。关于URL,我在_server.xml_文件中配置了一个新的主机,然后转到_http://jsp.test:8080/_显然我是在本地环境中 :) - Roberto Rizzi
如果您使用ROOT webapp,则无需配置server.xml,您只需访问http://127.0.0.1:8080即可访问您的应用程序。 - ceasaro
是的,我知道这个问题,但是我在_server.xml_配置方面没有遇到任何问题,事实上它在我设置的本地域名上运行良好。 - Roberto Rizzi
你不应该触碰webapps/ROOT或修改server.xml。你所需要做的就是创建一个正确的WAR文件并将其放置在/webapps下。其他任何操作都是错误的答案。 - duffymo

1
你需要学习如何在Tomcat上正确地创建和部署Web应用程序。
删除在/jsp_test根目录下的/web文件夹。你只需要在根目录下拥有/WEB-INF及其子目录。

1

0

我认为我刚刚解决了这个问题。

希望对某些人有用,下面是我的解决方案。

我删除了旧项目,并在与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

我认为这可能是由于某个类错误引起的。 谢谢你的帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接