我在 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()
答案 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)