【问题标题】:Intellij Plugin: Cannot init component state exceptionIntellij 插件:无法初始化组件状态异常
【发布时间】:2020-09-26 21:29:03
【问题描述】:

我正在尝试使用Settings->Tools 中的一些配置创建一个 Intellij Idea 插件。

我有一个ApplicationService 来保存和保存这些配置,但是在调用ServiceManager.getService(MyService.class) 时出现异常,并且在重新打开 Intellij Idea 时配置不会保留。

这是异常的堆栈跟踪:

com.intellij.diagnostic.PluginException: Cannot init  component state [Plugin: org.mycompany.mycompany-plugin]
    at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:116)
    at com.intellij.configurationStore.ComponentStoreWithExtraComponents.initComponent(ComponentStoreWithExtraComponents.kt:50)
    at com.intellij.serviceContainer.ComponentManagerImpl.initializeComponent$intellij_platform_serviceContainer(ComponentManagerImpl.kt:358)
    at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:58)
    at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:115)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:69)
    at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:411)
    at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:394)
    at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:20)
    at com.mycompany.config.SettingsService.getInstance(SettingsService.java:14)
    at com.mycompany.config.SettingsConfigurable.reset(SettingsConfigurable.java:46)
    at com.intellij.openapi.options.ex.ConfigurableWrapper.reset(ConfigurableWrapper.java:177)
    at com.intellij.openapi.options.ex.ConfigurableCardPanel.reset(ConfigurableCardPanel.java:166)
    at com.intellij.openapi.options.ex.ConfigurableCardPanel.lambda$createConfigurableComponent$4(ConfigurableCardPanel.java:118)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
    (a lot more lines here)
Caused by: java.lang.UnsupportedOperationException: configurationSchemaKey must be specified for com.mycompany.config.SettingsService
    at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:369)
    at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:100)
    ... 113 more

我没有找到关于“configurationSchemaKey”的文档,除了它是一个 ApplicationService XML 参数这一事实 - 但我找不到我应该在其中添加什么值。一.

我是这样定义服务的:

<applicationService
                serviceImplementation="com.testmycode.config.SettingsService"
                id="com.testmycode.config.SettingsService"/>

我错过了什么?

【问题讨论】:

    标签: java xml intellij-idea intellij-plugin


    【解决方案1】:

    configurationSchemaKey 属性是ServiceDescriptor 的一部分,描述为:

    不能指定为 {@link State} 的一部分,因为要获得注解,必须加载类,但出于性能原因不能这样做。

    但是,创建这样的服务来处理设置并不常见。

    请查看您当前的实施并遵循 IntelliJ 平台 SDK 开发指南中的 Introduction to Settings 指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2023-03-08
      • 1970-01-01
      • 2017-06-10
      • 2012-12-12
      相关资源
      最近更新 更多