Ragnar
Ragnar

Reputation: 665

NoClassDefFoundError in jackcess

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

Upvotes: 0

Views: 100

Answers (2)

greg-449
greg-449

Reputation: 111142

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).

Upvotes: 1

Super Hornet
Super Hornet

Reputation: 2907

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

Upvotes: 0

Related Questions