5

Sun solarisでホストされているweblogic サーバー 10gの xml 変換で、次の Java stackoverflow エラーが発生します。これは特定の xml 変換でのみ発生し、残りのすべての xml 変換は正常に機能します。使用される xsl ファイルもそれほど大きくありません。

rt.jar で利用可能な Transformation api を使用していますcom.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImplが、アプリケーションにパッケージ化していない xalan apache package( ) からこのエラーが発生します。

もう 1 つの興味深い点は、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()
4

1 に答える 1

4

へのすべての呼び出しに基づいて、ここで何らかの再帰が発生しているようGregorSamsa.replace()です。SolarisではなくWindowsで機能するという事実は、JVMの実装が異なるか、スタックサイズのデフォルトのJVMオプションが原因である可能性があります。

JVMスタック サイズ オプションの機能は次のとおりです。

Eclipse でスタック サイズを増やす方法は次のとおりです。

コマンドラインからスタックサイズを設定する方法と、このトピックに関する詳細な説明を次に示します。

$ javac TT.java
$ java -Xss4m TT

-Xss4m = 4 メガ
-Xss1024k = 1024kb

そのスレッドのみに指定されたスタック サイズを使用して、アプリケーションから新しいスレッドを起動する場合は、以下を含むThread クラスのコンストラクターを参照してください。

public Thread(ThreadGroup group, Runnable target,String name,long stackSize)
于 2012-06-08T18:17:49.997 に答える