0

I am trying to read a encrypted Access .mdb using the following libraries:

  • Jackcess-2.1.6
  • Jackcess-encrypt-2.1.2
  • Ucanaccess-4.0.2
  • bcprov-jdk15on-157

While simply implementing the JackcessOpenerInterface as per Ucanaccess's documentation:

public class CryptCodecOpener implements JackcessOpenerInterface {
    public Database open(File fl, String pwd) throws IOException {
        DatabaseBuilder dbd =new DatabaseBuilder(fl);
        dbd.setAutoSync(false);
        dbd.setCodecProvider(new CryptCodecProvider(pwd));
        dbd.setReadOnly(false);
        return dbd.open();

    }
}

I get the following exception:

Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/TouchCollector
    at com.healthmarketscience.jackcess.CryptCodecProvider.__cobertura_init(CryptCodecProvider.java)
    at com.healthmarketscience.jackcess.CryptCodecProvider.<clinit>(CryptCodecProvider.java)
    at com.decode.CryptCodecOpener.open(CryptCodecOpener.java:29)
    at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:161)
    at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:51)
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:99)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at com.decode.Importer.importFromDatabase(Importer.java:41)
    at com.decode.Main.main(Main.java:10)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.coveragedata.TouchCollector
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

From what I gather, Cobertura is a code coverage utility for Java. Is this simply a bad jar or am I doing something wrong?

Hrafn
  • 2,867
  • 3
  • 25
  • 44
  • You could try getting the Jackcess Encrypt JAR from [here](https://search.maven.org/remotecontent?filepath=com/healthmarketscience/jackcess/jackcess-encrypt/2.1.2/jackcess-encrypt-2.1.2.jar) and see if it works any better. (I checked the dependencies in its pom.xml and they make no mention of Cobertura.) – Gord Thompson Jun 21 '17 at 18:31
  • I am already using the official Jackcess-encrypt-2.1.2 jar, as I mentioned above. – Hrafn Jun 22 '17 at 10:32
  • I am unable to reproduce your issue using a [simple Maven project](https://pastebin.com/hdzti4rp) in Eclipse. – Gord Thompson Jun 22 '17 at 14:14
  • Thank you for the reference. Downgrading to Jackcess-encrypt-2.1.0 did solve the problem. If you want the answer, you can throw it up and I'll accept it. – Hrafn Jun 23 '17 at 13:48

0 Answers0