0

试图让组合jython-zxJDBC-UCanAccess在我的 Windows 机器上工作;我一整天都在发疯

zxJDBC.DatabaseError (驱动程序 [net.ucanaccess.jdbc.UcanaccessDriver] 未找到)zxJDBC.DatabaseError (驱动程序 [ucanaccess] 未找到)

我一直在使用Gord Thompson的这个示例代码和我的详细信息 - 无论我尝试什么,都会因未找到驱动程序错误而失败:

from com.ziclix.python.sql import zxJDBC
#Or also import ucanaccess

jdbc_url = "jdbc:ucanaccess://Z:/Companies.accdb"
username = ""
password = ""
driver_class = "net.ucanaccess.jdbc.UcanaccessDriver"
#Or driver_class = "net.ucanaccess.jdbc.UcanloadDriver"

cnxn = zxJDBC.connect(jdbc_url, username, password, driver_class)
crsr = cnxn.cursor()
crsr.execute("SELECT * FROM tblSICs")
for row in crsr.fetchall():
    print row[0]
crsr.close()
cnxn.close()
  • 单独使用 Jython 效果很好,我将它与 SikuliX IDE 一起使用
  • 'from ... import zxJDBC' 通过没有错误
  • UCanAccess 在命令行 (console.bat) 和我的 MS Access 数据库中运行良好;所有 5 个 JAR 都在 CLASSPATH 变量中

我不明白什么是“driver_class”?我认为特定于数据库的驱动程序是通过 Jython/SikuliX 在 CLASSPATH 中查找的,其中可以看到“.../ucanaccess-5.0.0.jar”。

这里的类路径:

"c:\Users\User\AppData\Roaming\UCanAccess\lib\hsqldb-2.5.0.jar;c:\Users\User\AppData\Roaming\UCanAccess\lib\jackcess-3.0.1.jar;c:\Users\User\AppData\Roaming\UCanAccess\lib\commons-lang3-3.8.1.jar;c:\Users\User\AppData\Roaming\UCanAccess\lib\commons-logging
-1.2.jar;c:\Users\User\AppData\Roaming\UCanAccess\ucanaccess-5.0.0.jar"

这里是 SikuliX IDE 寻找资源的地方:

D:\Drawer 3\Sikuli\Training\UCanAccess.sikuli Z:\test.sikuli C:\Users\User\AppData\Roaming\Sikulix\Lib\site-packages C:\Users\User\AppData\Roaming\Sikulix\ Lib C:\Users\User\AppData\Roaming\Sikulix\Extensions\Lib C:\Users\User\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.2.jar\Lib 类路径 pyclasspath /

有没有人发现这个问题?

4

1 回答 1

0

问题被发现是 SikuliX 2.0.4 的一个特殊版本,它无法评估 CLASSPATH 变量。这是了解 JAR 位置的解决方法/SiluliX 的方法:

两种解决方案:

解决方案 A

SikuliX IDE 查看文件夹 <C:\Users\User\AppData\Roaming\Sikulix\Extensions>;所有五个相关的 JAR 文件都需要放在该文件夹中(部署包中没有“lib”子文件夹):

  • ucanaccess-5.0.0.jar

  • commons-lang3-3.8.1.jar

  • commons-logging-1.2.jar

  • hsqldb-2.5.0.jar

  • jackcess-3.0.1.jar

检查通过查看 SikuliX->Tools->Extensions 找到的扩展 JAR...

解决方案 B

将所需的 JAR 保留在其原始部署文件夹中,并将其路径添加到“特殊文件”“C:\Users\User\AppData\Roaming\Sikulix\Extensions\extensions.txt”中:

  • ucanaccess = C:/Users/User/AppData/Roaming/UCanAccess/ucanaccess-5.0.0.jar

  • C:/Users/User/AppData/Roaming/UCanAccess/lib/commons-lang3-3.8.1.jar

  • C:/Users/User/AppData/Roaming/UCanAccess/lib/commons-logging-1.2.jar

  • C:/Users/User/AppData/Roaming/UCanAccess/lib/hsqldb-2.5.0.jar

  • C:/Users/User/AppData/Roaming/UCanAccess/lib/jackcess-3.0.1.jar

作为一种解决方法,这将被评估,而不是 CLASSPATH 变量

谢谢你的帮助!

于 2020-10-01T14:20:37.957 回答