Ошибка при подключении базы данных Oracle с использованием JPype - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь использовать JPype для связи моего Python кода с Java классами. В моем классе Java я написал код для подключения к базе данных с использованием API JDB C.

Содержание метода Java, вызываемого из Python, несколько ниже:

Class.forName("oracle.jdbc.driver.OracleDriver");

//Reference to connection interface 
con = DriverManager.getConnection(url,user,pass); 

PreparedStatement stmt = con.prepareStatement(stringQuery); 
stmt.setString(1, batchReferenceNo);
ResultSet rs = stmt.executeQuery();

//STEP 5: Extract data from result set
while(rs.next()){
bene_name = rs.getString(1);
}
con.close();

Но при выполнении моего Python кода я получаю ниже исключения в журналах:

'Поймано Java Исключение:', 'java .lang.ClassNotFoundException: oracle .jdb c .driver.OracleDriver ') java .lang.ClassNotFoundException: oracle .jdb c .driver.OracleDriver в java. net .URLClassLoader.findClass (URLClassLoader. java: 381) в java .lang.ClassLoader.loadClass (ClassLoader. java: 424) в sun.mis c .Launcher $ AppClassLoader.loadClass (Launcher. java: 331) в java .lang. ClassLoader.loadClass (ClassLoader. java: 357) в java .lang.Class.forName0 (собственный метод)

My Python Код:

def Validate_Payment_Instruction_JPype(self, batchRefNo):

cpath="-Djava.class.path=%s" % ("D:\workspace\AUTOMATION\AxiaLibrary\\")
startJVM(getDefaultJVMPath(), "-ea", cpath)
PaymentInstructionValidation = JClass('Payments.PaymentInstructionValidation')()
print(JObject(PaymentInstructionValidation.fetchPaymentInstruction(JString(batchRefNo))))
shutdownJVM()

Я попытался поместить ojdbc6.jar в мой путь к классу, т.е. "D: \ workspace \ AUTOMATION \ AxiaLibrary \". Но проблема все еще существует.

Пожалуйста, помогите, что нужно сделать, чтобы исправить это.

...