Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to determine my plugin's runtime dependencies?

Victor Cheung
Contributor
June 8, 2018

Hello,

After installing my plugin into JIRA, it warns me that "one or more modules is missing dependencies".

And as a result, my plugin is not enabled after installation (and cannot be enabled).

I've checked and the error logs are not helpful at all.

How can I find out what are the run-time dependencies of my plugin?  I am now suspecting that perhaps I need to add additional classes/packages into my pom.xml in the <import-package> section.  Alternatively, how can I determine what jars/libraries/classes are provided by my host JIRA instance (including those that are indirectly provided through other installed plugins which have exported their jars/libraries)?

Thanks in advance!

1 answer

0 votes
Alexey Matveev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 8, 2018

Hello,

Try to enable this plugin again and look in the logs. Usually there are helpful messages when enabling a plugin.

Victor Cheung
Contributor
June 11, 2018

Hi Alexey, 

Thanks for your reply!  I wish you were right, because I posed this question exactly because the error log was not that helpful to me which was/is the following:

2018-06-11 08:57:43,641 ThreadPoolAsyncTaskExecutor::Thread 33 ERROR vcheung 537x13239734x1 1ute834 10.60.0.112 /rest/plugins/1.0/com.amd.jira.plugins.customFieldTool-key [c.a.p.osgi.factory.OsgiPlugin] Unable to start the plugin container for plugin 'com.amd.jira.plugins.customFieldTool'
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL [bundle://241.0:0/META-INF/spring/plugin-context.xml]; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
at org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:170)
at org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:140)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$800(AbstractDelegatedExecutionApplicationContext.java:60)
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$3.run(AbstractDelegatedExecutionApplicationContext.java:242)
at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.startRefresh(AbstractDelegatedExecutionApplicationContext.java:220)
at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:224)
at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:177)
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:157)
at org.eclipse.gemini.blueprint.extender.internal.activator.LifecycleManager$1.run(LifecycleManager.java:207)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:184)
at com.atlassian.plugin.spring.scanner.util.ProductFilterUtil.detectService(ProductFilterUtil.java:86)
at com.atlassian.plugin.spring.scanner.util.ProductFilterUtil.detectProduct(ProductFilterUtil.java:74)
at com.atlassian.plugin.spring.scanner.util.ProductFilterUtil.getFilterForProduct(ProductFilterUtil.java:53)
at com.atlassian.plugin.spring.scanner.util.ProductFilterUtil.getFilterForCurrentProduct(ProductFilterUtil.java:44)
at com.atlassian.plugin.spring.scanner.extension.ClassIndexBeanDefinitionScanner.findCandidateComponents(ClassIndexBeanDefinitionScanner.java:98)
at com.atlassian.plugin.spring.scanner.extension.ClassIndexBeanDefinitionScanner.doScan(ClassIndexBeanDefinitionScanner.java:67)
at com.atlassian.plugin.spring.scanner.extension.AtlassianScannerBeanDefinitionParser.parse(AtlassianScannerBeanDefinitionParser.java:67)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:174)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
... 20 more

 As you can see, the error is complaining about some kind of parsing error with my plugin-context.xml file which is:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:atlassian-scanner="http://www.atlassian.com/schema/atlassian-scanner"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.atlassian.com/schema/atlassian-scanner
http://www.atlassian.com/schema/atlassian-scanner/atlassian-scanner.xsd">
<atlassian-scanner:scan-indexes/>
</beans>

I don't see anything wrong with the plugin-context.xml file.  Furthermore, my plugin installs without any problems on another JIRA 7.2.8 instance -- it's only having this error on our Unix instance version of JIRA 7.2.8 and I'm trying to troubleshoot why.  I'm at a loss since the error seems wrong/misleading.

Alexey Matveev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 11, 2018

Try to clean the osgi cache in the broken Jira instance:

  1. Stop the JIRA instance
  2. Delete JIRA_HOME/plugins/.bundled-plugins and JIRA_HOME/plugins/.osgi-plugins (just these two)
  3. Restart JIRA

If it is a production instance, Kindly make a backup first.

Victor Cheung
Contributor
June 11, 2018

Thank you, Alexey!  I will try your suggestion and will report my results!

Best regards,

victor

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events