3

Editor TopComponent を実装しました。ドキュメントを保存すると、何らかの理由でエラーがスローされます。以下にエラーを示します。この例外をどこから始めればよいかわかりません。あなたが知っていることを共有できますか?ありがとう

java.lang.IllegalArgumentException: Self-causation not permitted 
   at java.lang.Throwable.initCause(Throwable.java:458) 
   at org.netbeans.modules.masterfs.filebasedfs.fileobjects.MutualExclusionSupport.addStack(MutualExclusionSupport.java:122) 
   at org.netbeans.modules.masterfs.filebasedfs.fileobjects.MutualExclusionSupport.addStack(MutualExclusionSupport.java:109) 
   at org.netbeans.modules.masterfs.filebasedfs.fileobjects.MutualExclusionSupport.addResource(MutualExclusionSupport.java:98) 
   at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.getOutputStream(FileObj.java:127) 
   at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.getOutputStream(FileObj.java:102) 
   at org.openide.text.DataEditorSupport$Env.outputStream(DataEditorSupport.java:891) 
   at org.openide.text.CloneableEditorSupport.saveDocument(CloneableEditorSupport.java:1172) 
   at org.openide.text.DataEditorSupport.superSaveDoc(DataEditorSupport.java:602) 
   at org.openide.text.DataEditorSupport$SaveImpl.run(DataEditorSupport.java:1315) 
   at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:127) 
   at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:609) 
   at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:415) 
   at org.openide.text.DataEditorSupport.saveDocument(DataEditorSupport.java:598) 
   at org.netbeans.modules.openide.loaders.SimpleES$SaveCookieImpl.save(SimpleES.java:226) 
   at org.openide.actions.SaveAction.performAction(SaveAction.java:132) 
   at org.openide.actions.SaveAction.performAction(SaveAction.java:102) 
   at org.openide.actions.SaveAction$Delegate.actionPerformed(SaveAction.java:249) 
   at org.openide.awt.ContextAction$Performer.actionPerformed(ContextAction.java:231) 
   at org.openide.awt.ContextManager.actionPerformed(ContextManager.java:257) 
   at org.openide.awt.ContextAction.actionPerformed(ContextAction.java:109) 
   at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:93) 
   at org.openide.util.actions.ActionInvoker$ActionRunnable.actionPerformed(ActionInvoker.java:162) 
   at org.netbeans.core.ModuleActions.invokeAction(ModuleActions.java:109) 
   at org.netbeans.modules.openide.actions.ActionsBridgeImpl.invokeAction(ActionsBridgeImpl.java:60) 
   at org.openide.util.actions.ActionInvoker$ActionRunnable.doRun(ActionInvoker.java:153) 
   at org.openide.util.actions.ActionInvoker$2.run(ActionInvoker.java:110) 
   at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1432) 
   at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2044) 
Caused: org.openide.util.RequestProcessor$SlowItem: task failed due to 
   at org.openide.util.RequestProcessor.post(RequestProcessor.java:424) 
   at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:114) 
   at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99) 
   at org.openide.awt.GeneralAction$BaseDelAction.actionPerformed(GeneralAction.java:234) 
   at org.openide.windows.TopComponent.processKeyBinding(TopComponent.java:1176) 
   at javax.swing.JComponent.processKeyBindings(JComponent.java:2940) 
   at javax.swing.JComponent.processKeyEvent(JComponent.java:2842) 
   at java.awt.Component.processEvent(Component.java:6282) 
   at java.awt.Container.processEvent(Container.java:2229) 
   at java.awt.Component.dispatchEventImpl(Component.java:4861) 
   at java.awt.Container.dispatchEventImpl(Container.java:2287) 
   at java.awt.Component.dispatchEvent(Component.java:4687) 
   at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895) 
   at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762) 
   at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027) 
   at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899) 
   at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727) 
   at java.awt.Component.dispatchEventImpl(Component.java:4731) 
   at java.awt.Container.dispatchEventImpl(Container.java:2287) 
   at java.awt.Window.dispatchEventImpl(Window.java:2719) 
   at java.awt.Component.dispatchEvent(Component.java:4687) 
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) 
   at java.awt.EventQueue.access$200(EventQueue.java:103) 
   at java.awt.EventQueue$3.run(EventQueue.java:682) 
   at java.awt.EventQueue$3.run(EventQueue.java:680) 
   at java.security.AccessController.doPrivileged(Native Method) 
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
   at java.awt.EventQueue$4.run(EventQueue.java:696) 
   at java.awt.EventQueue$4.run(EventQueue.java:694) 
   at java.security.AccessController.doPrivileged(Native Method) 
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 
   at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159) 
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
[catch] at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

編集1

新しい MIME タイプが設定された dataObject と VisualElement サブクラスがありtext/x-pumlます。これらを元に戻すと、機能しtext/plain始めました。text/plainへの変更を逃したかどうかを確認するために検索しましたがtext/x-puml、何も見つかりませんでした。MIME タイプを に変更するために他に変更する必要があるものはありますtext/x-pumlか?

編集2

現在は散発的に発生しているようですが、頻繁に発生しています。カスタムの MIME タイプがある場合、独自の SaveCookie または Savable を実装する必要がありますか?

4

2 に答える 2

1

セマフォの問題のように見えます。

このファイルは排他ロックされているため、システムはファイルを保存できません。別の排他ロック (保存の必要に応じて) はできません。

ファイルの扱いを調べてみてください。どこかにロックがあるはずです。

于 2013-05-20T19:10:41.300 に答える
0

名前の変更が原因で同様のエラーが発生しましたが、それはファイルのロックが原因でした。だから私はでファイルのロックを使用しprimaryFile.lock()ました:

WindowManager.getDefault().invokeWhenUIReady(new Runnable()
{
    @Override
    public void run()
    {
        if (obj.getDomainModel() != null)
        {
            String newName = obj.getDomainModel().getName();
            FileObject primaryFile = obj.getPrimaryFile();
            try
            {
                primaryFile.rename(primaryFile.lock(), newName, primaryFile.getExt());
                callback.updateTitle(newName);
            }
            catch (IOException ex)
            {
                String message = String.format("The model couldn´t be renamed to \"%s\"", newName);

                LOG.warning(message);
            }
        }
    }
});

ファイルの保存などに使用します。

于 2015-04-20T21:49:45.520 に答える