James Ahlborn Upgrading from Jackcess 3.x (or 3.5.x) to 4.x

Jackcess 4.x is largely binary compatible with the previous 3.x (and 3.5.x) versions. In order to be more "module friendly", the exceptions thrown from a few infrequently used methods have changed from SQLException to IOException. Other than that, code compiled against the 3.x series should work fine with the 4.x series.

Even though Jackcess is now Java 9+ module compatible, it still only requires Java 8+. However, Jackcess can now be safely used in the module path of a Java 9+ project (with the module name of com.healthmarketscience.jackcess). There are a few features which require additional core Java modules to be enabled (but these modules are not required if the corresponding features are not utilized).

  • java.sql
    • This module is necessary if Jackcess will need to interact with any of the classes from the java.sql package (e.g. handling Clob/Blob or using ImportUtil).
  • java.scripting
    • This module is necessary if expression evaluation is enabled (the default) and the database includes expressions (e.g. default values, calculated columns, validation rules, etc.).

Working with Jackcess Encrypt

If you are using the Jackcess Encrypt project, then you will need to use a version compatible with the relevant Jackess API. Fortunately, the major versions match, so it's pretty simple:

  • Jackcess 4.x -> Jackcess Encrypt 4.y
  • Jackcess 3.x -> Jackcess Encrypt 3.y
  • Jackcess 2.x -> Jackcess Encrypt 2.y
  • Jackcess 1.x -> Jackcess Encrypt 1.y