Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6537167

XSLTC java.lang.NoSuchFieldError for XSLT that runs OK in Java 5

XMLWordPrintable

    • 1.4
    • x86
    • linux
    • Verified

        FULL PRODUCT VERSION :
        java version "1.6.0"
        Java(TM) SE Runtime Environment (build 1.6.0-b105)
        Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)


        ADDITIONAL OS VERSION INFORMATION :
        Linux d610 2.6.16.27-0.6-default #1 Wed Dec 13 09:34:50 UTC 2006 i686 i686 i386 GNU/Linux


        A DESCRIPTION OF THE PROBLEM :
        I have some XSLT stylesheets that compile and run fine in Java 5, but are failing in Java 6 with exceptions like this:

        java.lang.NoSuchFieldError: acting$dash$user
                at GregorSamsa.main$dash$nav()
                at GregorSamsa.template$dot$28()
                at GregorSamsa.applyTemplates5()
                at GregorSamsa.template$dot$15()
                at GregorSamsa.applyTemplates()
                at GregorSamsa.applyTemplates()
                at GregorSamsa.transform()
                at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:602)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:711)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)

        or

        java.lang.NullPointerException
                at com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase.getDocumentRoot(DTMDefaultBase.java:1611)
                at com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBaseIterators$RootIterator.setStartNode(DTMDefaultBaseIterators.java:713) at com.sun.org.apache.xalan.internal.xsltc.dom.KeyIndex$KeyIndexIterator.init(KeyIndex.java:805)
                at com.sun.org.apache.xalan.internal.xsltc.dom.KeyIndex$KeyIndexIterator.setStartNode(KeyIndex.java:747)
                at GregorSamsa.topLevel()
                at GregorSamsa.transform()
                at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:602)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:711)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)

        While trying to find the source of the problem, I think the problem might narrow down to the way I have some XSLT files which use <xsl:import> to import multiple other files, sometimes importing the same file more than once, eg. root.xsl imports import1.xsl and import3.xsl while import1.xsl also imports import3.xsl, and in import3.xsl it defines a global variable (like $acting-user, from the first exception message).

        The XSLT validates without error using XSLT validation applications, and runs without error in Java 5.



        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        I haven't been able to find exaclty the problem, so the easiest way for me to describe how to reproduce is to download the affected application from

        http://downloads.sourceforge.net/malbum/matte-0.5.0-livedemo.tbz2?modtime=1173708370&big_mirror=0

        This is a stand-alone webapp which you can easily reproduce these two exceptions by starting the application (with ./start.sh or .\start.bat), then going to

        http://localhost:8080/matte/add.do
        http://localhost:8080/matte/home.do

        The XSLT files used by these two URLS are located at

        apache-tomcat/webapps/matte/WEB-INF/xsl/upload-media.xsl
        apache-tomcat/webapps/matte/WEB-INF/xsl/home.xsl

        You can get a sample of the XML being used in the transformation by adding

        log4j.logger.magoffin.matt=DEBUG

        to the apache-tomcat/webapps/matte/WEB-INF/classes/log4j.properties

        file, restarting the application, and looking in the apache-tomcat/logs/catalina.out log file. This will log the XML being used in each request.




        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        The XSLT should transform without error (try the same stpes with a Java 5 JRE) and return the transformed XHTML.
        ACTUAL -
        An exception is thrown.

        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        java.lang.NoSuchFieldError: acting$dash$user
                at GregorSamsa.main$dash$nav()
                at GregorSamsa.template$dot$28()
                at GregorSamsa.applyTemplates5()
                at GregorSamsa.template$dot$15()
                at GregorSamsa.applyTemplates()
                at GregorSamsa.applyTemplates()
                at GregorSamsa.transform()
                at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:602)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:711)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)

        or

        java.lang.NullPointerException
                at com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase.getDocumentRoot(DTMDefaultBase.java:1611)
                at com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBaseIterators$RootIterator.setStartNode(DTMDefaultBaseIterators.java:713) at com.sun.org.apache.xalan.internal.xsltc.dom.KeyIndex$KeyIndexIterator.init(KeyIndex.java:805)
                at com.sun.org.apache.xalan.internal.xsltc.dom.KeyIndex$KeyIndexIterator.setStartNode(KeyIndex.java:747)
                at GregorSamsa.topLevel()
                at GregorSamsa.transform()
                at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:602)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:711)
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)


        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        The source code is included in the webapp application as described above.
        ---------- END SOURCE ----------

        CUSTOMER SUBMITTED WORKAROUND :
        Use Java 5.

        Release Regression From : 5.0u10
        The above release value was the last known release where this
        bug was not reproducible. Since then there has been a regression.

              spericas Santiago Pericasgeertsen
              ryeung Roger Yeung (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: