Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

Error "File /META-INF/tags/HelloTag.tag not found" when creating custom JSP Tag lib

Divyakumar_Jain
Level 2
Level 2

Hi All,

I am creating a JSP custom tag using tag file but i am getting following error

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/HelloTag.tag" not found

 

tag file is located at /META-INF/tags/HelloTag.tag

Following are content of tag definition file located at //META-INF/taglibs.tld

<taglib 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/j2ee/web-jsptaglibrary_2_1.xsd" version="2.1">    <tlib-version>1.0</tlib-version>    <short-name>Angular</short-name>    <uri>http://abc.org/Hello/Taglib</uri>    <tag-file>        <name>Hello</name>        <path>/META-INF/tags/HelloTag.tag</path>    </tag-file></taglib>

Also following is the configuration of bundle plugin

 

<plugin>    <groupId>org.apache.felix</groupId>    <artifactId>maven-bundle-plugin</artifactId>    <extensions>true</extensions>    <configuration>        <instructions>            <Bundle-SymbolicName>org.abc.angularjs-tags-aem</Bundle-SymbolicName>            <Sling-Model-Packages>org.abc.web.jsp.angularjs.tags</Sling-Model-Packages>            <Bundle-Resource>/META-INF/tags</Bundle-Resource>            <Sling-Bundle-Resource>/META-INF/tags</Sling-Bundle-Resource>        </instructions>    </configuration></plugin>

I read following blogs for creating this sample.

http://labs.6dglobal.com/blog/2013-07-02/tagfile-vs-tag-sling-or-cq5-application/

http://www.cqblueprints.com/tipsandtricks/jsp-custom-tag-lib.html

https://helpx.adobe.com/experience-manager/using/customtags.html

Also full maven artifact is attached with this form.

17 Replies
Divyakumar_Jain
Level 2
Level 2

I am using AEM 6.1 version.

https://helpx.adobe.com/experience-manager/using/customtags.html talks about custom tag using Java class but in my case I am using tag file (*.tag file).

Following is the jsp file

<%@page session="false" %><%@include file="/libs/foundation/global.jsp" %><%@ taglib prefix="cq" uri="http://www.day.com/taglibs/cq/1.0" %><%@ taglib prefix="hello" uri="http://abc.org/Hello/Taglib" %><body data-ng-app="angularjsSample"  data-ng-controller="BaseController">    <hello:Hello target="World"/></body>

Also following is the tag file.

<%@ attribute name="target" required="true" rtexprvalue="false" type="java.lang.String" %><div> Hello <%=target%> </div>
edubey
Level 10
Level 10

Okay, so it seems you are creating .tag files not .tld.

You need to use /WEB-INF/tags as shown below

JSP, sample.jsp

<%@ page contentType="text/html" %> <%@ taglib prefix="my" tagdir="/WEB-INF/tags/myCustomTags" %> <html> <body> NAME : <my:name /> </body> </html>

TAG, name.tag

<%@ tag body-content="empty" %> <% out.println("AEM Developer"); %>

Please see these:

https://nikojava.wordpress.com/2009/01/12/jsp-custom-tags-part1-create-tag-file/

http://archive.oreilly.com/pub/a/onjava/excerpt/jserverpages3_ch11/index.html

Divyakumar_Jain
Level 2
Level 2

Thanks Praveen for the reply.

There are two thing which need to be taken care in my case.

1. Tags will be located in separate package from content package. This separate package will be generic and can change at anytime. Thus do not want to hard code any paths.

2. My Tag library has both tag files and few java implementation of tags i.e. my tld xml will have both <tag> and <tag-file> elements. With this I am not sure if I can have single uri for tags located in /WEB_INF/tags and Java based tags.

edubey
Level 10
Level 10

AFAIK and implemented these in projects.

1. .tld will stay in OSGI bundle inside /META-INF and will be used with the help of uri.

2. .tags were places parallel to components in /apps and worked well with /WEB-INF path. and I don't thinks so it will work if you place .tags inside /META-INF as path for them has to start with  /WEB-INF.

Divyakumar_Jain
Level 2
Level 2

Do you mean i have to place .tags in content maven artifact and not in OSGI bundle?

edubey
Level 10
Level 10

yes,

Create a simple folder under /apps/project/components/customtagfolder and place all your .tag file inside this customtagfolder 

sruthia75953514
Level 1
Level 1

Hi Praveen,

We are upgrading from 5.6.1 to 6.2.

We have placed .tld file inside /META-INF and .tag file is inside /META-INF/tags and it is working fine without giving any errors in 5.6.1.

We have installed all the bundles to 6.2 environment, now the error is"File /META-INF/tags/HelloTag.tag not found".

From AEM 5.6.1 to 6.2 any configuration has been changed ?

 From AEM 6.1 onwards is it compulsory to place the *.tag files inside apps folder /apps/project/components/customtagfolder?

Please help me on my questions

Stanleyor
Level 3
Level 3

The same problem @sruthia75953514 described. Works fine in 5.6.1. On 6.2 a page is not loaded and in logs:

org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/helloWorld.tagx" not found

Any solutions?

Stanleyor
Level 3
Level 3

I've removed obsolete bundles

com.squeakysand.sling - squeakysand-sling-taglibcom.squeakysand.sling.squeakysand-sling-taglib com.squeakysand.jsp - squeakysand-jsp-taglibcom.squeakysand.jsp.squeakysand-jsp-taglib com.squeakysand.jcr - squeakysand-jcr-taglibcom.squeakysand.jcr.squeakysand-jcr-taglib com.cqblueprints.taglib - cqblueprints-taglibcom.cqblueprints.taglib.cqblueprints-taglib

and this has fixed my problem

Stanleyor
Level 3
Level 3

Removing of the com.cqblueprints.taglib bundle has fixed the issue

arunjoshh
Level 2
Level 2

We are upgrading from 6.1 to 6.3, I'm getting the same issue.

Any thoughts to fix this issue ?

Thanks

Arun

nvssr90
Level 3
Level 3

I am getting same issue when migrating from AEM 6.1 to AEM 6.3. We did an inplace upgrade. How do I find obsolete bundles in my instance. I dont have above bundles mentioned by Stanleyor.

Any thoughts what I need to check?

Thanks in advance!

chanchalesj6077
Level 2
Level 2

Same problem I am facing with AEM 6.3 , any clue?

I have used tld generator maven plugin in my project. it successfully generating the tld file in jar file but not able to access the .tag file.

arunjoshh
Level 2
Level 2

The issue was fixed in https://issues.apache.org/jira/browse/SLING-7044

Summary of the issue :

If a taglib in a bundle references a tag implemented as a script (located in /META-INF/tags) this script is not found as it is not searched within the bundle containing the tld - it's rather used as a resource on the classpath.

Please contact Adobe to get the patch fix for this issue.

Thanks

Arun

jamiec4451712
Level 3
Level 3

I'm having the exact same issue as the other folks on this issue. arunjoshh​ are you able to confirm that Adobe has a patch available?

arunjoshh
Level 2
Level 2

The issue was fixed in https://issues.apache.org/jira/browse/SLING-7044

This fix will be included in AEM 6.3.1.1, you can contact Adobe to get the pacth for this issue.

Thanks

Arun