xml转换的堆栈溢出异常

Ash*_*ose 5 java xml stack-overflow xslt

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

我正在使用 rt.jar 中提供的 Transformation api,但是从com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl我没有打包到我的应用程序中的xalan apache package( )得到这个错误。

另一个有趣的事情是,当我在 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()
Run Code Online (Sandbox Code Playgroud)

Mic*_*ake 4

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

以下是 JVM堆栈大小选项的作用

以下是增加 Eclipse 中堆栈大小的方法。

以下是如何通过命令行设置堆栈大小以及有关此主题的更多讨论:

$ javac TT.java
$ java -Xss4m TT
Run Code Online (Sandbox Code Playgroud)

-Xss4m = 4 兆
-Xss1024k = 1024kb

如果您想从应用程序启动一个新线程,并仅为该线程指定堆栈大小,请查看Thread 类的构造函数,包括:

public Thread(ThreadGroup group, Runnable target,String name,long stackSize)
Run Code Online (Sandbox Code Playgroud)