为什么 Derby 必须手动添加,即使它是 JDK 的一部分

Why does Derby have to be manually added even though its apart of JDK

不久前我问了一个关于无驱动程序错误的问题。我能够通过手动将 C:\Program Files\Java\jdk1.8.0_112\db\lib 目录添加到我的 eclipse 项目中来解决这个问题。我只是想知道为什么会这样。特别是当它看起来像 JDK 8 运行 中的所有其他 jar 文件时。也许。

首先,您需要将驱动程序 JAR 文件添加到 class 路径是正确的。 JavaDB 的 Oracle 文档是这样说的:例如,参见 http://docs.oracle.com/javadb/10.10.1.2/getstart/twwdactivity4.html

为什么?嗯,这是推测,但假设您想要 运行 一个与 MySQL 数据库对话的 Java 程序。如果包含 Derby 驱动程序的 JAR 文件被自动添加到 JVM 的 bootstrap class 路径,那么通常会加载 Derby Driver classes(由 DriverManager 框架),即使它只是您要使用的 MySQL Driver class。许多人会认为加载不需要的驱动程序是 缺陷 ... 如果 JVM 这样做的话。