osgi.wiring.package; (&(osgi.wiring.package=org.json)(version>=0.0.0)) Unresolved requirements:

917 Views Asked by At

I am compiling a java plugin that uses org.json. Before I included this the plugin was able to compiling and run correctly. I have seen similar problems on stackoverflow, but none of them address this problem using gradle.

In the top of my classes I have the following

import org.json.JSONArray;
import org.json.JSONObject;

My gradle build script contains the following:

repositories {
    maven {
        url "http://repo.dotcms.com/artifactory/libs-release"
    }
    mavenCentral()
    flatDir {
        dirs 'src/main/resources/localLibs'
    }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile fileTree(dir: 'src/main/resources/libs', include: '*.jar')
    compile (group: 'com.dotcms', name: 'dotcms', version: '4.2.2'){
        transitive = true
    }
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.8'
    compile group: 'org.json', name: 'json', version: '20170516'
    compile group: 'org.simpleflatmapper', name: 'sfm-csv', version: '3.14.1'
    /* Specifying an alternate configuration (see above 'configurations') keeps servlet-api.jar from being added to our own output Jar. */
    providedCompile "javax.servlet:javax.servlet-api:3.1.0"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

jar {
    manifest {
        name = 'Symplicity SOAP API Web Service'
        symbolicName = 'Symplicity SOAP API Web Service'
        instruction 'Bundle-Vendor', 'JustinKubicek'
        instruction 'Bundle-Name', 'Symplicity SOAP API Web Service'
        instruction 'Bundle-Description', 'This is a plugin to access the Symplicity SOAP API Web Service'
        instruction 'Bundle-DocURL', 'https://bitbucket.org/justinkubicek/symplicity-soap-api-plugin'
        instruction 'Bundle-Activator', 'com.symplicitysoapapi.soapapitool.osgi.Activator'
        instruction 'DynamicImport-Package', '*'
        instruction 'Import-Package', '*;version=0;'
    }
}    

The error I am getting is this here.

javax.servlet.ServletException: Unable to resolve Symplicity SOAP API Web Service
[197](R 197.0): missing requirement [Symplicity SOAP API Web Service [197](R 197.0)]
osgi.wiring.package; (&(osgi.wiring.package=org.json)(version>=0.0.0))
Unresolved requirements: [[Symplicity SOAP API Web Service [197](R 197.0)]
osgi.wiring.package; (&(osgi.wiring.package=org.json)(version>=0.0.0))]
Unable to start bundle
at com.dotmarketing.portlets.osgi.AJAX.OSGIAJAX.start(OSGIAJAX.java:122)
~[dotcms_4.2.2_999999.jar:?]
1

There are 1 best solutions below

0
On

Unless you need a custom version of the JSON libraries, I would recommend changing your imports to use the repackaged classes that are included in dotCMS libraries. The classes there are repackaged to allow developers to include custom versions of this library if needed. Here is a list of the json classes available in the 4.2.2 release:

./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/XMLTokener.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/XML.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/Test.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONWriter.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONTokener.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONStringer.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONString.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONObject.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONML.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONException.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/JSONArray.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/HTTPTokener.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/HTTP.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/CookieList.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/Cookie.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/CDL.java
./dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/dot.json-ukv_2.jar:com/dotcms/repackage/org/json/

Of course to use these classes at runtime you need to make sure they are listed in your Exported Packages list: https://dotcms.com/docs/latest/osgi-plugins#ExportedPackages