我有一个JBoss 6x中的web应用程序(它是一个ear文件)。
访问JSP页面时的错误消息:绝对uri:http://java.sun.com/jsp/jstl/core无法在此应用程序部署的web.xml或jar文件中解析
JSP
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
web.xml
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
WEB-INF\lib包含
jstl-1.2.jar
请问,我在这里做错了什么?感谢
问题出在JBoss 6x for.ear(企业档案)中的Classloaders行为上。我的ear文件内部有一个war,它最终使用了自己的类加载器——它总是只在WEB-INF\lib中查找jar文件。
我的jstl-1.2.jar位于JBOSS_HOME\server\domain\lib中这个位置的所有jar对.ear都可见,但对其中的.war却看不到。因此JSP找不到jstl-1.2.jar
一旦我在战争中把jstl-1.2.jar放在WEB-INF\lib中,错误就消失了。这就解释了问题和即时解决方案。
虽然我想为整个.ear提供一个单独的类加载器(而不是为.war提供不同的类加载器)-不确定如何做到这一点-但这是一个不同的问题。