有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

xml转换上的java堆栈溢出异常

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

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

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

有人能告诉我为什么我会犯这个错误吗

您能告诉我是哪个jar文件导致了异常吗?weblogic将拥有一个xalan。罐子如果是这样,我可以尝试升级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) 个答案

  1. # 1 楼答案

    根据对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兆欧
    -Xss1024k=1024kb

    如果您想从应用程序中启动一个新线程,并且只为该线程指定堆栈大小,请查看constructors for Thread class,包括:

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