Subjects
Home
Xalan extension functions
Fomatting question serializing DOM with pretty print
xalan with pull parser
Cannot find the declaration
Apache Xalan drop support to run on JRE 1 1 x
Why does Doctype change processing of a document
Node set to XML string via Java extensions in Xalan J: possible?
Templates/Transformers + thread safety???
Problem evaluating xpath with muliple prefix with different namespace
remove an arbitrary attribute from xsl output
Xalan3 XSLT 2 0 XPath 2 0 support?
Problem using compiled translets with Xalan !!
Xalan and jstl 1 1 problem with transform tag
NullPointer in DOM2DTM getLocalName
URIResolvers base parameter with xsltc and cascaded imports
Performance problem for Xalan J on intel dual core
Standard libraries in JAXP?
Serializing a DOM tree to XML file, customize entities replacement
Library Conflict Involving BCEL Library
A question on how users are using <xsl:message >
Kevin Cormier as a new Apache Xalan J committer
Struggling to iterate over tokenized string
Xalan count() trouble
Problem with recursive xpath
Error when switching to java 1 5
document( ' ')
Problem with Xalan2 7 0 transformation
cr/lf options
entity encoded XML
can xalan transform 2 xml using one xslt?
Xalan J JIRA defect review Monday October 16, 2006 from 2:00 to 3:30 pm ED
xsl transform with cdata section elements
xslt parameters not expanded
Weird behavior of XPath evaluate()
How to avoid <xsl:message > instruction prints stylesheet file informations ?
Cannot find SimpleTransform subdirectory after installing Xalan J
recover from document not found exceptions
jdk1 5 and Xalan jar differences?
Performance Issue
Error/Bug adding floating point numbers
XPathAPI: eval exp using nodes with default namespace
modifying xalan to output invalid XML
NullPointerException
mege two separate xml nodes into one
Is this a XALAN document identification bug?
is StylesheetRoot really java io Serializable ?
transform() fails for DOMSource but succeeds for StreamSource
Thoughts on Transformer parameter passing
HELP, Xalan and jstl 1 1 problem with transformer
Problem with XPath namespace axis?
string utils:replace deleting search string if replacement string is an HTML
help with enumeration values pls
xalan 2 5 1 vs 2 7 performance question
How to insert/update in XML document
HTML Serialization and Handling of Ampersands in HREF Attributes
XHTML link tag stripping
SystemId Unknown; Line #24; Column #49; java lang NullPointerException
xpath text() help
Apostrophe problem with xalan 2 7 0
How to set variables in XML document?
Links
Home
Oracle database error code ...
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
Problem calling external java method

Problem calling external java method

2005-10-19       - By Chris Bare
Reply:     1     2     3     4  

Help!

I keep getting a NoSuchMethodException while trying to call a java
extention function using Xalan-j 2.7.0. It seems that calling static
java methods works, but calling nonstatic methods seems to be broken.

I've included an easy way to reproduce the problem here. The commented
out template calls a static function on the class Helper. It works. The
other template calls a nonstatic method and it barfs giving this
message:
NoSuchMethodException: For extension function, could not find method
static xsltest.Helper.square([ExpressionContext,] #UNKNOWN
(xsltest.Helper), #NODESET)

Maybe I'm doing something wrong. I'm trying to follow the instructions
here:
http://xml.apache.org/xalan-j/extensions_xsltc.html

My questions are:
 Am I doing something totally bass-ackwards?
 Is this a Xalan bug?
 Is there already a bug report filed?
 (I looked in Jira and found old closed bugs [Bug 1501], but none for
2.7.0.)



-- test.xsl ----------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
               xmlns:java="http://xml.apache.org/xalan/java"
        version="1.0">

  <xsl:output method="xml"/>
       <xsl:variable name="helper" select="java:xsltest.Helper.new()"/>

  <xsl:template match="/">
   <foobar>
     <xsl:apply-templates select="/xsltest"/>
   </foobar>
  </xsl:template>

  <xsl:template match="number">
   <number>
     <xsl:variable name="num" select="@(protected)"/>
     <xsl:attribute name="square"><xsl:value-of
select="java:xsltest.Helper.square($helper,$num)"/></xsl:attribute>
   </number>
  </xsl:template>

<!--
  <xsl:template match="number">
   <number>
     <xsl:variable name="num" select="@(protected)"/>
     <xsl:attribute name="square"><xsl:value-of
select="java:xsltest.Helper.staticSquare($num)"/></xsl:attribute>
   </number>
  </xsl:template>
-->

</xsl:stylesheet>


-- Helper.java -------------------------------------------------

package xsltest;

public class Helper {

   public static int staticSquare(int n) {
       return n * n;
   }

   public int square(int n) {
       return n * n;
   }
}

-- MyXml.xml ---------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xsltest>
  <number value="3"/>
  <number value="17"/>
</xsltest>



Here's the command line:

> java -cp
./classes;./lib/xml-apis.jar;./lib/serializer.jar;./lib/xercesImpl.jar;.
/lib/xalan.jar;./lib/log4j-1.2.12.jar
org.apache.xalan.xslt.Process -IN ./src/xsltest/MyXml.xml -XSL
./src/xsltest/test.xsl

Here's the error msg:

(Location of error unknown)XSLT Error
(javax.xml.transform.TransformerException):
java.lang.NoSuchMethodException: For extension function, could not find
method static xsltest.Helper.square([ExpressionContext,] #UNKNOWN
(xsltest.Helper), #NODESET).
Exception in thread "main" java.lang.RuntimeException:
java.lang.NoSuchMethodException: For extension function, could not find
method static xsltest.Helper.square([ExpressionContext,] #UNKNOWN
(xsltest.Helper), #NODESET).
       at org.apache.xalan.xslt.Process.doExit(Process.java:1153)
       at org.apache.xalan.xslt.Process.main(Process.java:1126)


org.apache.xalan.xslt.EnvironmentCheck gives me:

[...]
version.xerces2=Xerces-J 2.7.1
version.xerces1=not-present
version.xalan2_2=Xalan Java 2.7.0
version.xalan1=not-present
version.ant=not-present
java.version=1.5.0_05
version.DOM=2.0
version.crimson=not-present
[...]
version.SAX=2.0
version.xalan2x=Xalan Java 2.7.0
[...]



-- thanks!!!