idea 插件报错启动不了_IDEA插件运行报错:Write access is allowed inside write-action only · 玹霖志...

1. @Domain行标记修改

Halo框架所创建的应用需要管中台可视化纳管,因此当应用启动的时候会判断当前应用是否属于某个域,不属于某个域将停止启动,HaloTools提供一个快速修改编辑的功能。如下图所示:

e761a89ac46fb1dff2e0255b35fc3f2b.png

如上图所示,可以成功进行行标记代码修改,但是会出现报错信息,下面将对报错信息进行分析Fix。

2.报错分析

java.lang.Throwable: Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Application.runWriteAction())

at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:180)

at com.intellij.openapi.application.impl.ApplicationImpl.assertWriteAccessAllowed(ApplicationImpl.java:1344)

at

大致意思是写的权限只能在Application.runWriteAction()里面是允许的

查询官网资料解释如下图所示:

e21913fa8f5c764c38be3297de156af2.png

IDEA行标记修改用到了写文件操作,因此需要在线程中操作,不然会出现文章开头出现的错误。

3. Bug Fix

定位到出错代码,如下所示:

processor.executeCommand(project, new DocumentReplace(document, startOffset, endOffset, domain), "", document)

将上述代码放入写操作中,修改如下所示:

@Override

public void navigate(MouseEvent mouseEvent, PsiElement psiElement) {

Application applicationManager = ApplicationManager.getApplication();

applicationManager.runWriteAction(() -> ➊

processor.executeCommand(project, new DocumentReplace(document, startOffset, endOffset, domain), "", document) ➋

);

DomainModelContext.clearAllSet();

}

➊ 在applicationManager.runWriteAction线程中开启写操作

➋ 进行行标记代码替换操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值