Oracle JDBC Driver with Java 9 java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver
Oracle JDBC Driver with Java 9 java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver
我正在尝试让 Java 应用程序与 Java 9+ 一起使用。在 1.9 jre 中 运行 时,我得到以下堆栈跟踪:
2018-06-06 11:22:54.304 ERROR - main - Replicator - (stderr) java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver
2018-06-06 11:22:54.305 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.base/java.lang.Class.forName0(Native Method)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.base/java.lang.Class.forName(Unknown Source)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.isDriverAllowed(Unknown Source)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.isDriverAllowed(Unknown Source)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.getDrivers(Unknown Source)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.getDrivers(Unknown Source)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr) at org.apache.commons.dbcp2.BasicDataSource.<clinit>(BasicDataSource.java:77)
我已经确认类路径是准确的,因为 1. 这在 Java 8 中运行良好,并且 2. 当 运行 在 9 中时所有其他 .jars 都正确加载。有没有人有任何运气 运行 Oracle jdbc Java 9+ 上的驱动程序?
因此,一旦我为 DriverManager 打开跟踪日志记录,问题就自行解决了。 Sybase 的旧 jconn 驱动程序与 Java 9/10 冲突并导致 DriverManager 出错。鉴于它现在是一个已弃用的驱动程序,这是有道理的。
我正在尝试让 Java 应用程序与 Java 9+ 一起使用。在 1.9 jre 中 运行 时,我得到以下堆栈跟踪:
2018-06-06 11:22:54.304 ERROR - main - Replicator - (stderr) java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver
2018-06-06 11:22:54.305 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.base/java.lang.Class.forName0(Native Method)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.base/java.lang.Class.forName(Unknown Source)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.isDriverAllowed(Unknown Source)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.isDriverAllowed(Unknown Source)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.306 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.getDrivers(Unknown Source)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr) at java.sql/java.sql.DriverManager.getDrivers(Unknown Source)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr)
2018-06-06 11:22:54.307 ERROR - main - Replicator - (stderr) at org.apache.commons.dbcp2.BasicDataSource.<clinit>(BasicDataSource.java:77)
我已经确认类路径是准确的,因为 1. 这在 Java 8 中运行良好,并且 2. 当 运行 在 9 中时所有其他 .jars 都正确加载。有没有人有任何运气 运行 Oracle jdbc Java 9+ 上的驱动程序?
因此,一旦我为 DriverManager 打开跟踪日志记录,问题就自行解决了。 Sybase 的旧 jconn 驱动程序与 Java 9/10 冲突并导致 DriverManager 出错。鉴于它现在是一个已弃用的驱动程序,这是有道理的。