问题
我目前正在使用Java9及其模块系统,希望通过JDBC连接到我的PostgreSQL数据库。
问题是,我找不到任何关于它在Java9和它的模块系统中的设置的信息,但只针对Java8和更早的版本。
问题
如何使用java模块系统正确设置JDBC及其驱动程序?
最佳答案
jar必须在运行时位于类路径上。编译时不需要jar。
如果Postgresql驱动程序已经模块化,它将在运行时使用uses/provides
机制:
java JRE:
module java.sql {
uses java.sql.Driver;
exports java.sql;
}
然后,驱动程序应该在模块信息中包含如下内容:
module org.postgresql {
requires java.sql;
provides java.sql.Driver with org.postgresql.Driver;
}
普通的ServiceLoader会自动发现驱动程序。
Class.forName("org.postgresql.Driver");
通常是不需要的,只是在一些JavaEE应用程序中有一些类加载器在做杂耍。