[java] ** Transformation error
     [java]    java.lang.StackOverflowError
     [java] java.lang.StackOverflowError
     [java]  at java.lang.FloatingDecimal.<init>(FloatingDecimal.java:22)
     [java]  at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1205)
     [java]  at java.lang.Double.valueOf(Double.java:202)
     [java]  at java.lang.Double.<init>(Double.java:277)
     [java]  at org.apache.xpath.objects.XStringForFSB.toDouble(XStringForFSB.java:982)
     [java]  at org.apache.xpath.objects.XNodeSet.getNumberFromNode(XNodeSet.java:143)
     [java]  at org.apache.xpath.objects.XNodeSet.num(XNodeSet.java:156)
     [java]  at org.apache.xpath.operations.Minus.operate(Minus.java:46)
     [java]  at org.apache.xpath.operations.Operation.execute(Operation.java:109)
     [java]  at org.apache.xpath.XPath.execute(XPath.java:268)
     [java]  at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:279)
     [java]  at org.apache.xalan.templates.ElemParam.execute(ElemParam.java:119)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:393)
     [java]  at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:247)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:161)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:393)
     [java]  at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:247)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:161)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:393)
     [java]  at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:247)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:161)
     ..................
     ..................
     [java]  at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:161)
     [java]  at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
     [java]  at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:393)

解决方案 »

  1.   

    Source code:import java.io.*;
    import java.io.PrintStream;import java.text.DateFormat;import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;public class Main {
        
        public static PrintStream printStream;
        private File output;
        public Main() {
        }    public static void main(String[] argv) {
            if (argv.length != 4) {
                System.err.println("...")
       
            }        Main main = new Main();        try {
                File xsl = new File(argv[0]);
                File xml = new File(argv[1]);
                File pkg = new File(argv[2]);
                File output = new File(argv[3]);            // Use a Transformer for output
                TransformerFactory tFactory = TransformerFactory.newInstance();
                StreamSource xslSource = new StreamSource(xsl);
                Transformer transformer = tFactory.newTransformer(xslSource);            /** Set property values to be used in stylesheet */
                transformer.setParameter("output.dir", output + File.separator
                                         + pkg);
                System.out.println("----------------------------------------------------------");            String msg = (String) transformer.getParameter("output.dir");            System.out.println("Output files to:\n " + msg);            Source xmlStream = new StreamSource(xml);
                StreamResult result = new StreamResult(System.out);            transformer.transform(xmlStream, result);
            } catch (TransformerConfigurationException tce) {
                // Error generated by the parser
                System.out.println("\n** Transformer Factory error");
                System.out.println("   " + tce.getMessage());            // Use the contained exception, if any
                Throwable x = tce;            if (tce.getException() != null) {
                    x = tce.getException();
                }
                x.printStackTrace();
                System.exit(1);
            } catch (TransformerException te) {
                // Error generated by the parser
                System.out.println("\n** Transformation error");
                System.out.println("   " + te.getMessage());            // Use the contained exception, if any
                Throwable x = te;            if (te.getException() != null) {
                    x = te.getException();
                }
                x.printStackTrace();
                System.exit(1);
            }
        }
         // main    private String getTodaysDate() {
            Calendar cal = new GregorianCalendar();
            Date date = cal.getTime();
            String todaysDate = DateFormat.getDateInstance().format(date);        return todaysDate;
        }
    }
      

  2.   

    StackOverflowError 当应用程序递归太深而发生堆栈溢出时,抛出该错误。
      

  3.   

    递归调用出现了死循环。建议你用DEBUG模式,单步跟踪看看。
      

  4.   

    棧溢出
    flush()一下嗎
    還有好像傳送的時候出現了死循環