我正在尝试使用 Python 从 linux Unbuntu vm 访问 IBM DVM(Data Virtualization Manager)。
我已经在unbuntu机器上安装了JAVA: java -版本
openjdk 版本“1.8.0_362” OpenJDK 运行时环境(build 1.8.0_362-b08) OpenJDK 64 位服务器 VM(构建 25.362-b08,混合模式)
我还安装了 JayDeBeAPI: pip 安装 JayDeBeApi
安装收集的包:packaging, JPype1, JayDeBeApi 成功安装JPype1-1.4.1 JayDeBeApi-1.2.3 packaging-23.0
从IBM网站我下载了DVM-JDBC3.1驱动程序
https://ak-delivery04-mul.dhe.ibm.com/sar/CMA/IMA/0bb4c/0/dvm-jdbc-3.1.202303130554.zip 解压到/opt/dvm-jdbc-3.1.202303130554.
我也设置了类路径: 回声 $CLASSPATH
/opt/dv-jdbc-3.1.202303130554:/opt/dv-jdbc-3.1.202303130554/dv-jdbc-3.1.202303130554.jar:
现在我正在尝试运行以下 python 代码以连接到 DVM
导入jpype
导入 jaydebeapi
dvm_driver_path = "/opt/dv-jdbc-3.1.202303130554/dv-jdbc-3.1.202303130554.jar"
jpype.addClassPath('/opt/dv-jdbc-3.1.202303130554/dv-jdbc-3.1.202303130554.jar') jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % ('/opt/dv-jdbc-3.1.202303130554/dv-jdbc-3.1.202303130554.jar'))
conn = jaydebeapi.connect('com.rs.jdbc.dv.DvDriver.class', 'jdbc:dv://###:##/###', {'用户密码': '####'}, '/opt/dv-jdbc-3.1.202303130554/dv-jdbc-3.1.202303130554.jar')
如果(连接): 打印('已连接') 别的: print('连接失败')
但我收到以下错误: python3 dvm-jdbc.py 追溯(最近一次通话): 文件“/opt/dv-jdbc-3.1.202303130554/dvm-jdbc.py”,第 26 行,位于 conn = jaydebeapi.connect('com.rs.jdbc.dv.DvDriver.class', 文件“/home/sanika/.local/lib/python3.10/site-packages/jaydebeapi/init.py”,第 412 行,在连接中 jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs) _jdbc_connect_jpype 中的文件“/home/sanika/.local/lib/python3.10/site-packages/jaydebeapi/init.py”,第 221 行 jpype.JClass(j类名) new 中的文件“/home/sanika/.local/lib/python3.10/site-packages/jpype/_jclass.py”,第 99 行 返回 _jpype._getClass(jc) 类型错误:找不到类 com.rs.jdbc.dv.DvDriver.class
我的司机班错了吗? 如果是这样,正确的是什么?
正确的类名应该是 'com.rs.jdbc.dv.DvDriver' ,所以你的连接线应该是
conn = jaydebeapi.connect('com.rs.jdbc.dv.DvDriver', 'jdbc:dv://###:##/###', {'user': '#####', 'password': '####'}, '/opt/dv-jdbc-3.1.202303130554/dv-jdbc-3.1.202303130554.jar')
还要确保 JDBC 驱动程序的路径是正确的,因为您在代码中提到了
/opt/dvm-jdbc-3.1.202303130554
和 /opt/dv-jdbc-3.1.202303130554
。