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?

Другие вопросы по тегам