JackCess "NoClassDefFoundError: java/sql/Blob" exception
JackCess "NoClassDefFoundError: java/sql/Blob" exception
下面是简单的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 文档说,如果出现此类异常,则会缺少依赖项。但是什么 dependendy 指的 java/sql/Blob 已经是 Java 的一部分了?
此外,通过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;
在使用 JackCess 的过程中,我还遇到过要访问我的 MS Access 数据库中的某些表(但不是其他一些表)我还需要
requires java.scripting;
下面是简单的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 文档说,如果出现此类异常,则会缺少依赖项。但是什么 dependendy 指的 java/sql/Blob 已经是 Java 的一部分了? 此外,通过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;
在使用 JackCess 的过程中,我还遇到过要访问我的 MS Access 数据库中的某些表(但不是其他一些表)我还需要
requires java.scripting;