tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Barker" <wbar...@wilshire.com>
Subject Re: Help - org.apache.jasper.JasperException: Unable to initialize TldLocationsCache: null
Date Wed, 11 Jan 2006 04:10:05 GMT
Try it without the <taglib>...</taglib> in web.xml.   Tomcat (and any other 
JSP-2.0 container) will pick up a .tld in /META-INF of a jar file in 
WEB-INF/lib automagically.

Unfortunately, Jasper is hiding the root cause of the Exception that is 
being thrown, so I can't see why it's unhappy :(.  If the above doesn't fix 
anything, check the file permissions under WEB-INF (e.g. the user Tomcat is 
running as can read and list all directories).

"Justin Moore" <JMoore@ecount.com> wrote in message 
news:265671A375AC3045934307E40D309F20216ADC@VEXCHB.office.ecount.com...
Hi,
I am using tomcat version 5.5.12 and am getting the following exception
and cannot find a way around the issue.  Google isn't offering much. I
have also included my web.xml below.  One site on google mentioned that
taglib declarations should no longer use the <!DOCTYPE .. command.  I
also have included my taglib definition.  I have been struggling with
this for a couple of days, and now need to resort to the experts, so you
help is greatly appreciated.

Thanks,
Justin

==============================
The exception:
==============================
org.apache.jasper.JasperException: Unable to initialize
TldLocationsCache: null

org.apache.jasper.compiler.TldLocationsCache.init(TldLocationsCache.java
:252)

org.apache.jasper.compiler.TldLocationsCache.getLocation(TldLocationsCac
he.java:223)

org.apache.jasper.JspCompilationContext.getTldLocation(JspCompilationCon
text.java:526)

org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:422)

org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)

org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552)
        org.apache.jasper.compiler.Parser.parse(Parser.java:126)

org.apache.jasper.compiler.ParserController.doParse(ParserController.jav
a:211)

org.apache.jasper.compiler.ParserController.parse(ParserController.java:
100)

org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)

org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.ja
va:563)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
va:293)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

==============================
The Web.xml
==============================

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <display-name>WorkbenchFileManager</display-name>
    <description>
        Receives file upload/download requests for the Workbench web
application.

        The idea is that the Workbench will cause any file posts or gets
to go through
        this application, so that this application can potentially
reside on a separate,
        more secure server.

        Upon completion of file uploads, this application will post-back
the results to
        a specified URL on the Workbench site. This will return the user
to the workflow
        of that application, keeping this application as simple as
possible.
    </description>

    <!-- Tell the application what its name is. -->
    <context-param>
        <param-name>appname</param-name>
        <param-value>WorkbenchFileManager</param-value>
    </context-param>

    <!--
        ***** LISTENERS *****

        These are called on application start in the order they appear.

        They are called again on application stop in reverse of the
            order in which they appear.
    -->
    <!-- Controls the SystemLog -->
    <listener>

<listener-class>com.cbase.web.product.workbench.SystemLogLifecycleManage
r</listener-class>
    </listener>

    <!-- Controls the Performance Log -->
    <listener>

<listener-class>com.cbase.web.product.workbench.PerformanceLogLifecycleM
anager</listener-class>
    </listener>

    <!-- Controls the ApplicationController -->
    <listener>

<listener-class>com.cbase.web.product.workbench.ApplicationControllerLif
ecycleManager</listener-class>
    </listener>

    <!-- Error Page Mappings -->
    <error-page>
        <error-code>404</error-code>
        <location>/systemunavailabledisplay.jsp</location>
    </error-page>

    <taglib>
        <taglib-uri>http://ecount.com/tags/framework</taglib-uri>

<taglib-location>/WEB-INF/lib/ClientFrameworkTags.jar</taglib-location>
    </taglib>
</web-app>
==============================
The TagLib.tld
==============================
<?xml version="1.0" encoding="ISO-8859-1"?>


<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_
0.xsd"
  version="2.0">
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>

    <short-name>tables</short-name>
    <uri>http://ecount.com/tags/jsptables</uri>
    <display-name>Ecount JSP Tables</display-name>

    <description>
        Provides Table Generation Support for building Web UIs.

        Use of this taglib requires that the jsptables.js file be
included in your web application under the following
        relative path: scripts/jsptables.js.
    </description>

    <tag>
        <name>grid</name>
        <tag-class>com.cbase.web.jsp.tables.GridTag</tag-class>
        <tei-class>com.cbase.web.jsp.tables.GridTagExtraInfo</tei-class>

        <body-content>JSP</body-content>

        <description>
            Produces a grid containing the contents of the specified
collection. The grid-col
            tag is used to define the columns of each row in the grid.
The grid-detail tag is
            used to add an extra row of data whose visibility can be
toggled.
        </description>

        <attribute>
            <name>id</name>
            <required>false</required>
            <description>
                Used as the ID attribute of the root HTML element of the
grid.
            </description>
        </attribute>
        <attribute>
            <name>lineStyle</name>
            <required>false</required>
            <description>
                Optionally specify the CSS class used for each line.
            </description>
        </attribute>
        <attribute>
            <name>altLineStyle</name>
            <required>false</required>
            <description>
                Optionally specify an alternate CSS class to be used on
every other line. This will let you achieve the
                "alternating background colors" thing. Note: both the
primary line and any grid-details will have the
                same background color.
            </description>
        </attribute>
        <attribute>
            <name>collection</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.util.Collection</type>
            <description>
                The Collection to iterate over in the grid.
            </description>
        </attribute>
        <attribute>
            <name>var</name>
            <required>true</required>
            <description>
                The name of the scripting variable accessed by child
tags to hold the current element of the collection
                during iteration.
            </description>
        </attribute>
        <attribute>
            <name>varType</name>
            <required>true</required>
            <description>
                The class name of the datatype of the contents of the
collection.
            </description>
        </attribute>
        <attribute>
            <name>header</name>
            <required>false</required>
            <description>
                Toggles whether or not a header row is displayed for the
grid. Default is true.
            </description>
        </attribute>
    </tag>

    <tag>
        <name>grid-col</name>
        <tag-class>com.cbase.web.jsp.tables.GridColumnTag</tag-class>
        <body-content>JSP</body-content>

        <attribute>
            <name>idBase</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.lang.String</type>
            <description>
                The ID of each column generated by the iteration will
start with this ID and then append a counter
                starting with 0.
            </description>
        </attribute>
        <attribute>
            <name>colStyle</name>
            <required>false</required>
            <description>
                Optionally specify the CSS class for the column.
            </description>
        </attribute>
        <attribute>
            <name>cellStyle</name>
            <required>false</required>
            <description>
                Optionally specify the CSS class for each cell within
the column.
            </description>
        </attribute>
        <attribute>
            <name>field</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                If specified, the name of the field of the current item
in the collection to output as the column
                contents, the body contents will be ignored. If not
specified, then the contents of the tag's body are
                used.
            </description>
        </attribute>
        <attribute>
            <name>sortable</name>
            <required>false</required>
            <description>
                Indicates that the field can be sorted by the client in
the browser. Default is false.
            </description>
        </attribute>
        <attribute>
            <name>displayName</name>
            <required>false</required>
            <description>
                Optional column name for the column. If not specified,
the display name will be the same as the field
                name. If there is no field name then it will be blank.
            </description>
        </attribute>
        <attribute>
            <name>format</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.text.Format</type>
            <description>
                Optional instance of a Format implementation to use to
format the field attribute. This attribute is
                ignored if you do not specify a value for the field
attribute. Basically, the format(Object) method
                is called, and the result is what is put on the page.
            </description>
        </attribute>
        <attribute>
            <name>nullValue</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Optional replacement value for NULLs. If the the value
of the field is null, then this text will be
                shown in the cell. If nullValue is not specified and a
null occurs, the cell will simply be blank.
                If a format is specified, it is NOT applied to the
nullValue.
            </description>
        </attribute>
    </tag>

    <tag>
        <name>grid-detail</name>
        <tag-class>com.cbase.web.jsp.tables.GridDetailsTag</tag-class>

<tei-class>com.cbase.web.jsp.tables.GridDetailsTagExtraInfo</tei-class>
        <body-content>JSP</body-content>
        <description>
            Contains JSP code that will be displayed on a line below the
main line of each grid row. Supports the
            ability to be hidden, as well as the ability to toggle
visibility.
        </description>

        <attribute>
            <name>idBase</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Optional base name for the detail lines. If not
specified then the enclosing grid tag's ID will be used
                with "--detail" appended.
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <description>
                Optional CSS class name to be assigned to the contents
of the tag.
            </description>
        </attribute>
        <attribute>
            <name>collapsible</name>
            <required>false</required>
            <description>
                If collapsible is true then a toggle will be displayed
in the first column of each row that allows the
                user to hide and unhide the details. showDetailWidget is
the URL of a graphic to show when the details
                are hidden. When clicked the details will be unhidden.
hideDetailWidget is the URL of a graphic to show
                when the details are visible. When clicked the details
will be hidden. collapsible is false by default.

                If either showDetailWidget or hideDetailWidget are not
specified then the text "show" and "hide" will be
                used instead of a graphic.
            </description>
        </attribute>
        <attribute>
            <name>toggleDisplayMethod</name>
            <required>false</required>
            <description>

                If collapsible is true then toggleDisplayMethod must be
the name of a javascript function that takes an
                element ID as its sole parameter. The function will be
responsible for toggling the display attribute of
                the grid-detail contents.

                An example function would be:

                <![CDATA[
                toggleDisplayMethod := toggleBlockDisplay

                function toggleBlockDisplay(target) {
                    toggleDisplay(target, 'block');
                }

                function toggleDisplay(target, normDisplayMode) {
                    var e = document.getElementById(target);
                    if(e == null) { return; }

                    var display = '' + e.style.display;

                    if(display != '' && display != 'none') {
                        display = 'none';
                    }
                    else {
                        display = normDisplayMode;
                    }

                    e.style.display = display;
                }
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>switchDisplayMethod</name>
            <required>false</required>
            <description>
                If collapsible is true then switchDisplayMethod must be
the name of a javascript function that takes two
                element IDs as its sole parameters. The function will be
responsible for ensuring that only one of the
                two elements is visible. If the first element is
currently visible then it must be made invisible and
                vice-versa.

                An example function would be:

                <![CDATA[
                switchDisplayMethod := switchDisplayBlock

                function switchDisplayBlock(target1, target2) {
                    switchDisplay(target1, target2, 'block');
                }

                function switchDisplay(target1, target2, display) {
                    var t1 = document.getElementById(target1);
                    var t2 = document.getElementById(target2);

                    if(t1 != null && t2 != null) {
                        var display1 = '' + t1.style.display;
                        var display2 = '' + t2.style.display;

                        if(display1 != '' && display1 != 'none') {
                            // target1 is showing so, hide it and show
target2
                            t1.style.display = 'none';
                            t2.style.display = display;
                        }
                        else if(display2 != '' && display2 != 'none') {
                            // target1 wasn't displayed, but target2 is,
so hide
                            // target2 and show target1
                            t1.style.display = display;
                            t2.style.display = 'none';
                        }
                    }
                }
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>actuatorStyle</name>
            <required>false</required>
            <description>
                Name of the CSS class to apply to the actuator.
            </description>
        </attribute>
        <attribute>
            <name>showDetailWidget</name>
            <required>false</required>
            <description>
                URL of the widget to display when the details for a row
are visible.
            </description>
        </attribute>
        <attribute>
            <name>hideDetailWidget</name>
            <required>false</required>
            <description>
                URL of the widget to display when the details for a row
are not visible.
            </description>
        </attribute>
        <attribute>
            <name>hidden</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                If hidden is true then the details for each row will not
be visible when the grid is first rendered. If
                collapsible is false when hidden is true, the user will
not ever be able to see the contents of the
                details.
            </description>
        </attribute>
    </tag>
</taglib>




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message