Когда я пытаюсь передать объект SQLXML в хранимую процедуру Oracle через JDBC в приложении Java 6, работающем на Weblogic, я получаю следующую ошибку:
Cause: java.lang.NoClassDefFoundError Location: javax.servlet.ServletException: java.lang.NoClassDefFoundError: oracle/xdb/XMLType java.lang.NoClassDefFoundError: oracle/xdb/XMLType at oracle.jdbc.driver.PhysicalConnection.createSQLXML(PhysicalConnection.java:9724) at weblogic.jdbc.wrapper.Connection.createSQLXML(Connection.java:1034)
Соответствующая часть кода:
String sql = "{call " + procedureName + "(?)}";
CallableStatement callableStatement = mOracleConnection.prepareCall(sql);
SQLXML sqlxml = mOracleConnection.createSQLXML();
DOMResult dr = new DOMResult();
sqlxml.setResult(DOMResult.class);
dr.setNode(parameter);
callableStatement.setSQLXML(1, sqlxml);
callableStatement.executeUpdate();
callableStatement.close();
В этой статье ошибка приписывается отсутствует xdb.jar.
Я скачал xdb6.jar с сайта Oracle. и, по-видимому, добавил его в CLASSPATH.
Я также дважды проверил, что файл класса oracle.xdb.XMLtype
присутствует в JAR.
Я все еще получаю эту ошибку.
Любые предложения по дальнейшему устранению неполадок?
ИЗМЕНИТЬ [19.11.15]:
Я добавил Class.forName("oracle.xdb.XMLType")
, чтобы проверить явную загрузку «отсутствующего» класса. После добавления в смесь xmlparserv2.jar мой тестовый код работал нормально, но я получил такое же исключение в PhysicalConnection
.
Я использую объединенное соединение, если это имеет значение.