J. *_*Doe 8 java jira jira-plugin
我开始开发jira插件,但是我遇到了错误.
我最近的一个,我无法修复
[INFO] [talledLocalContainer] QuickReload - 插件安装程序错误[caposgi.factory.OsgiPlugin]插件'xy'从未使用过滤器'解析服务'&classname'(&(objectClass = xy.classname)(objectClass = xy.classname))'
这里出了什么问题?
use*_*695 14
当您尝试将插件的另一个对象注入插件的对象时,就会发生这种情况,就像另一个对象是另一个不同的插件并导出为公共OSGi服务一样.
在JIRA中,您可以将插件Java类声明为组件.这意味着实例化和依赖注入(例如通过构造函数)将自动委托给作为JIRA一部分的Spring Framework.通常我们这样做会失去对实例化和类依赖性的关注.公共和私人有两种类型的组件.公共组件可用于导入不同于您的插件.其他插件可以导入它们,然后通过依赖注入使用它们.私有组件将与公共组件一样工作,但其他插件将无法导入或查看它们.
如果你有一个组件,比如A
依赖于另一个组件,B
它们都是你插件的一部分,你就不应该导入组件B
,A
因为它已经是你插件的一部分了.在JIRA 7之前导入您放置在atlassian-plugin.xml
a <component-import>
元素上的组件.@ComponentImport
当您通过构造函数执行依赖项注入时,您在构造函数参数之前放置了JIRA 7 .
所以我认为你做错<component-import>
了就是直接从你的插件中加入一个组件而不是<component>
.或者,如果您有JIRA 7或更高版本,那么您所做的错误就是放在@ComponentImport
您自己的插件的组件之前,解决方案就是删除该注释.至少最后一个是我的情况,并从相同的插件中删除了依赖注入来自同一个插件的组件的注释.
当我为Confluence v6.1.3开发一个插件时遇到类似的问题.我正在从Atlassian Spring Scanner v1迁移到v2.按照Atlassian Spring Scanner v2指南中的说明操作后,我认为这样做很好但是有这个错误:
[INFO] [talledLocalContainer] 2017-08-24 22:54:52,602错误[localhost-startStop-1] [plugin.osgi.factory.OsgiPlugin] logAndClearOustandingDependencies插件'com.confluenceservice.confluence.plugin.page-seen'从未解决过service'&pageViewedService'with filter'(&(objectClass = com.confluenceservice.confluence.plugin.PageViewedService)(objectClass = com.confluenceservice.confluence.plugin.PageViewedService))'
导致此错误的原因是@ComponentImport PageViewedService service
:
@Autowired
public AlertUserMacro(@ComponentImport PageViewedService service,
@ComponentImport PageManager pageManager) {
//constructor...
}
Run Code Online (Sandbox Code Playgroud)
这在Spring Scanner v1中是可以的,但在Spring Scanner v2中没有.不需要导入,因为它PageViewedService
是我的插件的一部分.我需要导入,PageManager
因为它的范围超出了我的插件.解决方案:
@Autowired
public AlertUserMacro(PageViewedService service, @ComponentImport PageManager pageManager) {
//constructor
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
归档时间: |
|
查看次数: |
2240 次 |
最近记录: |