【问题标题】:JackCess "NoClassDefFoundError: java/sql/Blob" exceptionJackCess“NoClassDefFoundError:java/sql/Blob”异常
【发布时间】:2021-11-24 03:36:22
【问题描述】:

以下简单的java程序:

import com.healthmarketscience.jackcess.util.OleBlob;

public class Test {

    public static void main(String[] args) throws Exception {
        byte[] data = new byte[100];
        OleBlob oleBlob = OleBlob.Builder.fromInternalData(data);
    }
}

让我例外

Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Blob
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1088)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:814)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:735)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:660)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    at com.healthmarketscience.jackcess@4.0.1/com.healthmarketscience.jackcess.util.OleBlob$Builder.fromInternalData(OleBlob.java:423)
    at tabellenFahrplan/test.Test.main(Test.java:12)
Caused by: java.lang.ClassNotFoundException: java.sql.Blob
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    ... 12 more

JackCess 文档说,如果出现此类异常,则缺少依赖项。但是,对于已经是 Java 一部分的 java/sql/Blob 来说,有什么依赖关系呢? 此外,通过maven我已经有了依赖项

  • jackcess-4.0.1.jar
  • commons-lang3-3.10.jar
  • commons-logging-1.2.jar

在 OpenJdk 16.0.2 上运行 JackCess 4.0.1

【问题讨论】:

  • 你有module-info.java 文件吗?如果有,是否包含requires java.sql;
  • 谢谢,我确实错过了requires java.sql; 条目

标签: java sql database jackcess


【解决方案1】:

问题是我缺少module-info.java 文件中的条目。关于我最初的问题是

requires java.sql;

继续使用 JackCess 我还遇到了为了访问我的 MS Access 数据库中的一些表(但不是其他一些表)我还需要

requires java.scripting;

【讨论】:

  • 如果您的表使用表达式(例如,默认值、计算字段、字段验证),您将需要编写脚本。但是,如果需要,您可以关闭表达式支持。
猜你喜欢
  • 2013-10-27
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 2011-02-06
  • 2016-03-26
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多