0

I am working on an RCP application which is based on eclipse plugins. In one of my plugin project I add another plugin project as dependency. Let say Project A has Project B as a dependency defined under its manifest. Project B contains jackcess.jar file as referenced library.

In Project B I have a class called Mirror.java

 public Mirror(String source, String template, String target) throws SQLException, IOException {
    this.sourceString=source;
    this.templateFileString=template;
    this.targetFileString=target;
}

inside from project A when I try to create an object of class Mirror

 Mirror  m = new Mirror(connectionString, "EABase_JET4_empty.eap",platformDB.getAbsolutePath());

I get the following error

java.lang.NoClassDefFoundError: com/healthmarketscience/jackcess/ImportFilter

build.properties of Project B (containing jackcess.jar)

bin.includes = META-INF/,\
           src/main/resources/lib/jackcess-1.2.6.af3.jar

The MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MirrorDbToEap
Bundle-SymbolicName: MirrorDbToEap
Bundle-Version: 1.0.0
Export-Package: .,
 com.example.jetdb.mirror
 Require-Bundle: CommonsIo;bundle-version="2.0.0",
 org.apache.commons.lang;bundle-version="2.6.0",
 org.apache.commons.logging;bundle-version="1.0.4"

Image Anyone having any idea what's going wrong here?

Thanks

Ragnar
  • 645
  • 8
  • 28

2 Answers2

1

You are not including the jackcess.jar in the bin.includes in the build.properties file so it is not being included in the RCP build.

Open the build.properties editor and select the jar in the 'Binary Build' selection.

The jar must also appear in the Bundle-ClassPath in the MANIFEST.MF. In the manifest editor in the Runtime tab add the jar to the 'Classpath' section (you should also have '.' for normal plugin code).

greg-449
  • 109,219
  • 232
  • 102
  • 145
0

It seems the class which is available in compile time, is not available in run time.

Super Hornet
  • 2,839
  • 5
  • 27
  • 55