The absolute uri cannot be resolved in either web.xml or the jar files deployed with this application

Seckin Tozlu picture Seckin Tozlu · Dec 1, 2014 · Viewed 15.1k times · Source

I'm converting a web application to use TomEE instead of Jboss 5.1.0 and seeing the following exception:

ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[mlui]- Servlet.service()     for servlet [mlui] in context with path [] threw exception [The absolute uri: http://www.springframework.org/spring-social/social/tags cannot be resolved in either web.xml or the jar files deployed with this application] with root cause
org.apache.jasper.JasperException: The absolute uri: http://www.springframework.org/spring-social/social/tags cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:445)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:152)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1427)
at org.apache.jasper.compiler.Parser.parse(Parser.java:138)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)

I read all the similar questions and they all suffer from missing dependencies or not matching URIs between jsp and tld file. But in my case these are all fine. Here is my taglib declaration:

<%@ taglib prefix="social" uri="http://www.springframework.org/spring-social/social/tags" %>

I have the spring-social.tld file in spring-social-web:1.1.0.RELEASE which is under WEB-INF\lib and it has the same URI as my jsp file. Here are the spring related libraries under WEB-INF\lib in case it can help.

spring-aop-3.2.2.RELEASE.jar
spring-beans-3.2.2.RELEASE.jar
spring-context-3.2.2.RELEASE.jar
spring-core-3.2.2.RELEASE.jar
spring-data-commons-core-1.4.0.RELEASE.jar
spring-expression-3.2.2.RELEASE.jar
spring-jdbc-3.2.2.RELEASE.jar
spring-security-config-3.1.3.RELEASE.jar
spring-security-core-3.1.3.RELEASE.jar
spring-security-crypto-3.1.3.RELEASE.jar
spring-social-config-1.1.0.RELEASE.jar
spring-social-core-1.1.0.RELEASE.jar
spring-social-facebook-1.1.1.RELEASE.jar
spring-social-instagram-1.0.1.BUILD.jar
spring-social-web-1.1.0.RELEASE.jar
spring-test-3.1.3.RELEASE.jar
spring-tx-3.2.2.RELEASE.jar
spring-web-3.2.2.RELEASE.jar
spring-webmvc-3.2.2.RELEASE.jar

Answer

Seckin Tozlu picture Seckin Tozlu · Dec 3, 2014

For those who are interested, I simply extracted the .tld file from the jar and put it under my WEB-INF directory and it solved the problem. I still don't know why TomEE was unable to resolve it when it was inside the jar.