Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Unable to start plugin: Unable to resolve 167.0: missing requirement [167.0] osgi.wiring.package; (osgi.wiring.package=com.atlassian.inject)

MarlonK December 1, 2016

I'm using the latest version of the atlassian SDK to develop a plugin for JIRA. I've already written a large portion of my code, and have added a handful of dependencies that I required to the pom.xml file of my project (see below).

Unfortunately, upon running atlas-run to start my local JIRA environment, it fails to load my plugin due the following error:

    '

com.COMPANY.COMPANY-worklog-plugin' - 'COMPANY-worklog-plugin'  failed to load.
        [INFO] [talledLocalContainer]  Cannot start plugin: com.COMPANY.COMPANY-worklog-plugin
        [INFO] [talledLocalContainer] Unresolved constraint in bundle com.COMPANY.COMPANY-plugin [167]: Unable to resolve 167.0: missing requirement [167.0] osgi.wiring.package; (osgi.wiring.package=com.atlassian.inject)
        [INFO] [talledLocalContainer]
        [INFO] [talledLocalContainer]It was loaded from C:\Project\COMPANY-worklog-plugin\target\jira\home\plugins\installed-plugins\COMPANY-worklog-plugin-1.0.0-SNAPSHOT.jar


I've been plagued with the same kinds of errors for a few days now, including the following: (which I managed to fix by adding the dependency to my POM):

[INFO] [talledLocalContainer]Unresolved constraint in bundle com.maxxton.worklog-plugin [167]: Unable to resolve 167.0: missing requirement [167.0] osgi.wiring.package; (osgi.wiring.package=bsh)



I've tried the following things:

 1. Re-generating my plugin with the Atlassian Framework, which worked until I re-added my dependencies
 2. Removing and re-adding my dependencies to see where the error lays. Couldn't manage to find out if there's a faulty dependency or not.
 3. Changing the scopes of my external dependencies (provided-> compile and back, test where necessary.)
 4. Use atlas-mvn clean nearly every time before running my atlas-run command.
 5. Activating my plugin within jira (timeout error)
 6. Researched this question before posting. I'm especially lost because it appears to be a stock Atlassian package that's causing the problem.

My POM is as followed:

<?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">

      <modelVersion>4.0.0</modelVersion>   <groupId>com.maxxton</groupId>  <artifactId>maxxton-worklog-plugin</artifactId>   <version>1.0.0-SNAPSHOT</version>

      <organization>
        <name>Example Company</name>
        <url>http://www.example.com/</url>   </organization>

      <name>maxxton-worklog-plugin</name>   <description>This is the com.maxxton:maxxton-worklog-plugin plugin for Atlassian JIRA.</description>   <packaging>atlassian-plugin</packaging>

      <dependencies>
        <dependency>
          <groupId>com.atlassian.jira</groupId>
          <artifactId>jira-api</artifactId>
          <version>${jira.version}</version>
        </dependency>
        <!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
        <!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->

        <!--<dependency>-->
            <!--<groupId>com.atlassian.jira</groupId>-->
            <!--<artifactId>jira-core</artifactId>-->
            <!--<version>${jira.version}</version>-->
            <!--<!–<scope>provided</scope>–>-->
            <!--<scope>compile</scope>-->
        <!--</dependency>-->

        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.atlassian.plugin</groupId>
          <artifactId>atlassian-spring-scanner-annotation</artifactId>
          <version>${atlassian.spring.scanner.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.atlassian.plugin</groupId>
          <artifactId>atlassian-spring-scanner-runtime</artifactId>
          <version>${atlassian.spring.scanner.version}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.inject</groupId>
          <artifactId>javax.inject</artifactId>
          <version>1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.beanshell</groupId>
          <artifactId>bsh</artifactId>
          <version>2.0b4</version>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.3.6</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpasyncclient</artifactId>
          <version>4.0.2</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpmime</artifactId>
          <version>4.3.6</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.json</groupId>
          <artifactId>json</artifactId>
          <version>20140107</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.mashape.unirest</groupId>
          <artifactId>unirest-java</artifactId>
          <version>1.4.9</version>
          <scope>compile</scope>
        </dependency>

        <!-- WIRED TEST RUNNER DEPENDENCIES -->
        <dependency>
          <groupId>com.atlassian.plugins</groupId>
          <artifactId>atlassian-plugins-osgi-testrunner</artifactId>
          <version>${plugin.testrunner.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>javax.ws.rs</groupId>
          <artifactId>jsr311-api</artifactId>
          <version>1.1.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>com.google.code.gson</groupId>
          <artifactId>gson</artifactId>
          <version>2.2.2-atlassian-1</version>
          <scope>compile</scope>
        </dependency>


        <!-- Uncomment to use TestKit in your project. Details at https://bitbucket.org/atlassian/jira-testkit -->
        <!-- You can read more about TestKit at https://developer.atlassian.com/display/JIRADEV/Plugin+Tutorial+-+Smarter+integration+testing+with+TestKit
    -->
        <!--
        <dependency>
          <groupId>com.atlassian.jira.tests</groupId>
          <artifactId>jira-testkit-client</artifactId>
          <version>${testkit.version}</version>
          <scope>test</scope>
        </dependency>
        -->   </dependencies>

      <build>
        <plugins>
          <plugin>
            <groupId>com.atlassian.maven.plugins</groupId>
            <artifactId>maven-jira-plugin</artifactId>
            <version>${amps.version}</version>
            <extensions>true</extensions>
            <configuration>
              <productVersion>${jira.version}</productVersion>
              <productDataVersion>${jira.version}</productDataVersion>
              <!-- Uncomment to install TestKit backdoor in JIRA. -->
              <!--
              <pluginArtifacts>
                <pluginArtifact>
                  <groupId>com.atlassian.jira.tests</groupId>
                  <artifactId>jira-testkit-plugin</artifactId>
                  <version>${testkit.version}</version>
                </pluginArtifact>
              </pluginArtifacts>
              -->
              <enableQuickReload>true</enableQuickReload>
              <enableFastdev>false</enableFastdev>

              <!-- See here for an explanation of default instructions: -->
              <!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins
    -->
              <instructions>
                <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>

                <!-- Add package to export here -->
                <Export-Package>
                  com.maxxton.api,
                </Export-Package>

                <!-- Add package import here -->
                <Import-Package>
                  org.springframework.osgi.*;resolution:="optional",
                  org.eclipse.gemini.blueprint.*;resolution:="optional",
                  *
                </Import-Package>

                <!-- Ensure plugin is spring powered -->
                <Spring-Context>*</Spring-Context>
              </instructions>
            </configuration>
          </plugin>

          <plugin>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
            <version>${atlassian.spring.scanner.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>atlassian-spring-scanner</goal>
                </goals>
                <phase>process-classes</phase>
              </execution>
            </executions>
            <configuration>
              <scannedDependencies>
                <dependency>
                  <groupId>com.atlassian.plugin</groupId>
                  <artifactId>atlassian-spring-scanner-external-jar</artifactId>
                </dependency>
              </scannedDependencies>
              <verbose>false</verbose>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>   </build>

      <properties>
        <jira.version>7.2.4</jira.version>
        <amps.version>6.2.6</amps.version>
        <plugin.testrunner.version>1.2.3</plugin.testrunner.version>
        <atlassian.spring.scanner.version>1.2.13</atlassian.spring.scanner.version>
        <!-- This key is used to keep the consistency between the key in atlassian-plugin.xml and the key to generate bundle. -->
        <atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
        <!-- TestKit version 6.x for JIRA 6.x -->
        <testkit.version>6.3.11</testkit.version>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>   </properties>

    </project>


Thank you.

1 answer

1 accepted

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

Post a new question

3 votes
Answer accepted
MarlonK December 4, 2016

Looks like I found a way to fix it, though I'm unsure if it's a good fix. It has something to do with importing certain packages; I'm unsure of the logic behind it, but it seemed to have gotten rid of any and all of the bundle errors, causing my plugin to load perfectly when starting my local environment.

For those curious, I changed my <Import-Package> from:

<Import-Package>org.springframework.osgi.*;resolution:="optional",org.eclipse.gemini.blueprint.*;resolution:="optional",*</Import-Package>

To

<Import-Package>org.springframework.osgi.*;resolution:="optional",org.eclipse.gemini.blueprint.*;resolution:="optional",*;version="0";resolution:=optional</Import-Package>

TAGS
AUG Leaders

Atlassian Community Events