【发布时间】: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