Expand my Community achievements bar.

SOLVED

Getting Exception When Accessing Sightly Helper Class

Avatar

Level 9

Hi All,

I have created helper class and written some of the utilities as part of it.Now when i am trying to access this inside my sightly component HTML ,getting below exception.

com.xxxx.dcom.sightly.helpers.components.HomePageBannerComponent POJO.
io.sightly.java.compiler.CompilerException: java.lang.ClassNotFoundException: com.xxxx.dcom.sightly.helpers.components.HomePageBannerComponent
    at io.sightly.java.compiler.SightlyCompileServiceImpl.loadObject(SightlyCompileServiceImpl.java:137)
    at io.sightly.java.compiler.SightlyCompileServiceImpl.getInstance(SightlyCompileServiceImpl.java:80)
    at io.sightly.java.engine.extension.use.PojoUseProvider.provide(PojoUseProvider.java:65)
    at io.sightly.java.engine.extension.use.UseExtension$1.call(UseExtension.java:82)
    at io.sightly.java.runtime.common.SightlyRuntimeImpl.call(SightlyRuntimeImpl.java:51)
    at apps.dcom.dm.components.content.contentsection.homepagebanner.SightlyJava_homepagebanner.render(SightlyJava_homepagebanner.java:50)
    at io.sightly.java.api.BaseRenderUnit.render(BaseRenderUnit.java:39)
    at io.sightly.java.engine.SightlyScriptEngine.evaluateScript(SightlyScriptEngine.java:109)
    at io.sightly.java.engine.SightlyScriptEngine.eval(SightlyScriptEngine.java:93)
    at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:361)
    at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:171)

Thanks,

Kishore

1 Accepted Solution

Avatar

Correct answer by
Level 10

Can you follow this  article and see if that works: 

https://helpx.adobe.com/experience-manager/using/creating-sightly-component.html

This will tell us if your issue is your environment. If this works - we can rule out an environment issue. 

View solution in original post

13 Replies

Avatar

Level 10

Hey Kishore -- looks like the Java class you are using for the Sightly component cannot be found. 2 things to check: 

1 - is the helper class extend com.adobe.cq.sightly.WCMUse

2 - is the bundle that you placed the class in an active state? 

For those reading this thread and wanting to know how to use Sightly and Java together - see this AEM Community article: 

https://helpx.adobe.com/experience-manager/using/creating-sightly-component.html

We have more advanced Sightly ones too - for example: 

Creating a Sightly component that uses the AEM QueryBuilder API

Creating an AEM Sightly movie component

All of these show using Sightly on front end with Java on backend. 

Hope this helps

Avatar

Level 10

Also - this months Ask the Experts is exactly this topic. If you are interested in knowing about AEM and Sightly - sign up here: 

http://scottsdigitalcommunity.blogspot.ca/2016/03/ask-aem-community-experts-deep-dive.html

Avatar

Level 10

Apart from wht scott mentioned:

Which AEM version?

Show you code please from component and java

Make sure you are exporting package

Avatar

Level 9

Hi Scott,

Thanks for the reply.

Helper class is implementing WCMUse interface and also bundle is activate state as well.

Syntax for getting this class inside sight component is as below.

<section data-sly-use.homePageBannerComponent="${'com.prj.dcom.sightly.helpers.components.HomePageBannerComponent'}"></section> 

Thanks,

Kishore

Avatar

Level 9

i am using AEM 6.0.0 version.

Thanks,

Kishore

Avatar

Level 10

Thanks

Go to the bundle details and see whether you are exporting package and its present there

Avatar

Level 9

Yes ,package of this class is listed in the exported packages of the bundle.

Avatar

Level 10

Just wondering.....y these two class names are different

One in exception

io.sightly.java.compiler.CompilerException: java.lang.ClassNotFoundException: com.xxxx.dcom.sightly.helpers.components.HomePageBannerComponent

and one in sightly file

<section data-sly-use.homePageBannerComponent="${'com.prj.dcom.sightly.helpers.components.HomePageBannerComponent'}"></section>

Second thing....................

use this 

<section data-sly-use.homePageBannerComponent="com.prj.dcom.sightly.helpers.components.HomePageBannerComponent">

instead of

<section data-sly-use.homePageBannerComponent="${'com.prj.dcom.sightly.helpers.components.HomePageBannerComponent'}">

Avatar

Level 9

Please consider com.prj.dcom.sightly.helpers.components.HomePageBannerComponent this only.

And also i am seeing below error as well.

11.03.2016 00:53:30.565 *ERROR* [127.0.0.1 [1457637810506] GET /content/www/in/en.html HTTP/1.1] com.adobe.cq.sightly.WCMUse Failed to activate Use class

 

Thanks,

Kishore

Avatar

Correct answer by
Level 10

Can you follow this  article and see if that works: 

https://helpx.adobe.com/experience-manager/using/creating-sightly-component.html

This will tell us if your issue is your environment. If this works - we can rule out an environment issue. 

Avatar

Level 7

By the exception message it looks like the template engine is not able to access the mentioned class file. Could you please check once that you class is present in the OSGI and the bundle is also active. Not exactly sure though.

Regards

Tuhin

Avatar

Level 10

Share the code for your WCM class in java

Avatar

Level 9

Looks like it's a environmental issue.Checking it.