6

We have a Windows 64 bit machine, where we initially set up a .NET Content Deployer and we deployed there aspx generated from CMS Tridion (DWT & Razor), and the environment is working. Now, we need to move to Java, so I did the following steps:

  • on the CMS side I set up a new publication target with JSP target
  • on the existing CD Windows machine, I set up on Tomcat the cd_upload application, so I was able to deploy JSP's
  • I set up a web application on Eclipse where I deploy the JSP's, and I'm running it on Tomcat

So the JSP files are deploying and I can access them through the Tomcat server. The problem is for the JSP's that have component links, in that case I get the error below:

message: /all-offers.jsp (line: 50, column: 2) Unable to load tag handler class "com.tridion.web.jsp.tag.ComponentLinkHandler" for tag "tridion:ComponentLink"

description: The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /all-offers.jsp (line: 50, column: 2) Unable to load tag handler class "com.tridion.web.jsp.tag.ComponentLinkHandler" for tag "tridion:ComponentLink"
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:199)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1226)
org.apache.jasper.compiler.Parser.parseElementsScriptless(Parser.java:1501)
org.apache.jasper.compiler.Parser.parseBody(Parser.java:1667)
org.apache.jasper.compiler.Parser.parseJspBody(Parser.java:1618)
org.apache.jasper.compiler.Parser.parseJspAttributeAndBody(Parser.java:1029)
org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1000)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1274)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1452)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.

What I tried:

  • in WEB_INF/lib I added cd_tags.tld file

  • in the JSP I set on the header: <%@taglib uri="/WEB-INF/lib/cd_tags.tld" prefix="tridion" %>

  • in the JSP, the generated tags look like: <tridion:ComponentLink pageURI="tcm:10-565-64" componentURI="tcm:10-320" templateURI="tcm:0-0-0" addAnchor="false" linkText="&lt;i class=&#34;icon-chevron-right&#34;&gt;&lt;/i&gt;see more details" linkAttributes=" class=&#39;uppercase&#39;" textOnFail="true"/>

  • in the Java build path I included the jar files from the software distribution: cd_ambient.jar, cd_broker.jar, cd_cache.jar, cd_core.jar, cd_datalayer.jar, cd_dynamic.jar, cd_linking.jar, cd_model.jar, cd_tcdl.jar, cd_wai.jar

  • on the cd_tags.tld file I see the warning:

    The tag handler class for "ComponentLink" (com.tridion.web.jsp.tag.ComponentLinkHandler) was not found on the Java Build Path.

So it looks like that class above is not found in the CLASSPATH.

I tried with both Java 6 and Java 7 JDK's and I get the same error.

So can you give me some pointers where I could check?

  • 1
    Did you check the 'System classpath' link in point 3 of my answer below? Which version of Tridion are you using? If you are using version 6, then you may want to check out the following: tridion.stackexchange.com/a/1854/71 – Jonathan Williams Oct 28 '13 at 10:48
  • Ok, so first of all, I just saw now that I haven't included cd_dynamic.jar file in the classpath. So I include it, and now I get this error: java.lang.NoClassDefFoundError: Could not initialize class com.tridion.web.jsp.tag.ComponentLinkHandler. I have Tridion 2013 and Java 7 – user765 Oct 28 '13 at 11:45
  • From what searched so far, looks like there could be a license issue ? But the license file I have is ok, and is working fine on the same machine on the .NET implementation... – user765 Oct 28 '13 at 11:47
  • Do you have a specific cd_license.xml for the new Java site? If so, can you compare that to the one that you are using for the .NET implementation? You could try overriding the location of the license (within the the 'License' element cd_*_conf.xml files) to point the JAVA site to the one used on the .NET site. – Jonathan Williams Oct 28 '13 at 12:21
  • Ok, I fixed it, basically I made a big mistake and didn't include in the class path cd_dynamic.jar file, which actually contained the handler class for that tag... – user765 Oct 28 '13 at 12:22
3

I would probably check the following first:

  1. You have the correct cd_license.xml file and are referencing it correctly
  2. You have the correct version of the JRE installed (64-bit) and have referenced it correctly.
  3. You have the System Classpath properly referenced. This is used by the Cache Channel Service and Deployer. Details can be found in the online documentation here (login required).
  4. You have all of the necessary jar files. More details are in the Content Delivery JAR file reference section of the online documentation (login required).

Hope it helps!

2

From the error message

Unable to load tag handler class "com.tridion.web.jsp.tag.ComponentLinkHandler"

it sounds like there is something missing or wrong with your configuration files. Handler classes are configured in cd_dynamic_conf.xml. Does your site have a custom tag handler implemented and is overriding the default class? Perhaps you're missing cd_dynamic_conf.xml altogether or is it corrupt in some way?

  • I don't have a custom tag handler. I have also included the default cd_dynamic_conf.xml file, I haven't made any changes in that one. – user765 Oct 28 '13 at 6:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.