Я пытался обновить версию Java (в настоящее время 8u144), используемую в приложении, подключающемся к базе данных Oracle 12.2 с использованием ojdbc8.Моя последняя попытка обновить до 8u201 не удалась со следующей ошибкой:
Exception in thread "main" java.lang.NullPointerException
at oracle.net.jndi.JndiAttrs.getAttrs(JndiAttrs.java:215)
at oracle.net.resolver.AddrResolution.<init>(AddrResolution.java:237)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:233)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:384)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:273)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:198)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:176)
at Main.main(Main.java:22)
Я использую URL-адрес LDAP с поддерживаемым и задокументированным синтаксисом, подобным следующему:
"jdbc:oracle:thin:@ldaps://ldap.example.com:7777/sales,cn=OracleContext,dc=com"
Хотямой вопрос похож на следующий, я не использую Hibernate, и этот вопрос, похоже, действительно не отвечает / не решает, что может быть основной проблемой.
Невозможно получить соединение БД после Java 8upgrade
Чтобы упростить все, я сократил свои тесты до простого проекта, использующего только ojdbc8 и что-то вроде следующего:
String url = "jdbc:oracle:thin:@ldaps://....";
OracleDataSource ods = new OracleDataSource();
ods.setUser("indiana");
ods.setPassword("thedoctor");
ods.setURL(url);
Connection conn = ods.getConnection();
PreparedStatement st = conn.prepareStatement("select * from world where temple = 'doom'");
ResultSet rs = st.executeQuery();
while(rs.next()) {
System.out.println(rs.getString("last"));
}
Если я переключаю Java на 8u144 с использованием точноготот же код и конфигурация, выше работает просто отлично.Я в растерянности ...
ОБНОВЛЕНИЕ Я несколько сузил проблему и обнаружил, что разрыв происходит в Java 8u171.Я просматриваю примечания к выпуску для этой версии и все, что могу найти сейчас.