ClassCastException при работе в Oracle Database JVM
У меня есть следующий код:
OracleDataSource ods = new OracleDataSource();
ods.setURL(thinConnectionString);
OracleConnection conn = (OracleConnection) ods.getConnection();
ArrayDescriptor d = ArrayDescriptor.createDescriptor("MDSYS.RDF_MODELS", conn);
Когда я запускаю этот код вне виртуальной машины Oracle, он работает без проблем. Однако, когда я загружаю его в JVM базы данных Oracale с loadjava
Инструмент, а затем запустить его внутри Oracle, я получаю следующее исключение:
java.lang.ClassCastException
at oracle.jdbc.driver.PhysicalConnection.putDescriptor(PhysicalConnection.java)
at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:156)
at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:123)
at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:106)
at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:73)
at XercesTest.Test1(XercesTest.java:46)
at XercesTest.Test(XercesTest.java:171)
Что является причиной этой проблемы и как ее можно исправить?
Редактировать:
Когда я проверяю базовый тип объекта подключения, я получаю тип oracle.jdbc.driver.T4CConnection
при работе вне виртуальной машины Oracle, и oracle.jdbc.driver.T2SConnection
при запуске на сервере.
Редактировать 2: [решено]
Проблема была из-за конфликта в jdbc
занятия по вождению; loadjava
случайно загруженные файлы зависимостей от ojdbc5.jar
к базе данных, которая вызвала конфликт с теми из Oracle. Как только я уронил их, все работало нормально.
1 ответ
Откуда берутся классы OracleDataSource и OracleConnection? Вы пытались установить соединение, просто используя "стандартные классы JDBC"?
Connection conn = DriverManager.getConnection("jdbc:default:connection")
Кажется, что ваше соединение с источником данных не то, что ожидает драйвер Oracle.
Вы изменили URL JDBC соответственно?
Другие операции также терпят неудачу, или это просто ArrayDescriptor?