xml转换时的堆栈溢出异常

时间:2012-06-05 17:17:08

标签: java xml xslt stack-overflow

我在 sun solaris 中托管的 weblogic server 10g 中的xml转换上遇到以下java stackoverflow错误。这仅适用于特定的xml转换,并且所有xml转换都可以正常工作。使用的xsl文件也不是很大。

我正在使用rt.jar中提供的Transformation api,但是从我的应用程序中未打包的xalan apache包(com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl)中获取此错误。     

另一个有趣的事情是,当我在windows机器中托管的weblogic 10g服务器中运行应用程序时,我没有得到这个异常,我只在sun solaris中得到这个。

任何人都可以告诉我为什么会收到此错误。

您能告诉我哪个jar文件导致异常吗? weblogic会有xalan.jar吗?如果是这样,我可以尝试升级jar文件,看看它是否正常工作?

Caused by: java.lang.StackOverflowError
    at com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl.characters(SimpleResultTreeImpl.java)
    at com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl.copy(SimpleResultTreeImpl.java:438)
    at com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary.copy(BasisLibrary.java:1317)
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()
    at GregorSamsa.replace()

1 个答案:

答案 0 :(得分:4)

根据对GregorSamsa.replace()的所有调用,此处似乎发生了一些递归。它在Windows而不是Solaris上工作的事实可能是由于JVM的不同实现,或更可能是堆栈大小的默认JVM选项。

以下是JVM stack size option does

以下是increase the stack size in Eclipse.

的方法

以下是通过命令行set the stack size以及有关此主题的更多讨论的方法:

$ javac TT.java
$ java -Xss4m TT

-Xss4m = 4 megs
-Xss1024k = 1024kb

如果要从应用程序中启动具有指定堆栈大小的新线程,请仅查看constructors for Thread class,包括:

public Thread(ThreadGroup group, Runnable target,String name,long stackSize)