2

私はすでに同様の質問をここに投稿しました: JSVGCanvas を含む JComponent のサイズを変更するときの Batik IllegalStateException。ただし、問題を最小限のコード セットに減らすことができました。たぶん、誰かが私の問題を見つけるのに役立ちます。

スレッドから次のコードを繰り返し呼び出しています。

//currentComponent is a custom JComponent that contains the JSVGCanvas
if(currentComponent != null && currentComponent.getSvgCanvas().getUpdateManager() != null)
{
    try
    {
        currentComponent.getSvgCanvas().getUpdateManager().getUpdateRunnableQueue().invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                resetDocument();
            }

            private void resetDocument()
            {
                currentComponent.getSvgCanvas().setDocument(currentComponent.getSvgCanvas().getSVGDocument());
            }
        });
    }
    catch(Exception e)
    {
        System.out.println("Error");
        e.printStackTrace();
    }
}

時々、次の例外が発生します。

java.lang.IllegalStateException: RunnableQueue not started or has exited
    at org.apache.batik.util.RunnableQueue.invokeLater(RunnableQueue.java:277)
    at java.lang.Thread.run(Unknown Source)

これはBatikのバグですか、それとも何か間違っていますか?

4

2 に答える 2

2

私は同様の問題を抱えていました.Same IllegalStateException は、特別なユースケースでのみ発生しました。

私の問題は、私のコードが実行中に実行されたことでした

documentLoadingCompleted(SVGDocumentLoaderEvent P_event)

私は自分のコードを実行しているので

gvtRenderingCompleted(GVTTreeRendererEvent P_e)

すべてが機能します。

于 2013-03-15T06:11:02.303 に答える