在从命令行调用的 Jython 脚本中使用 UCanAccess

Using UCanAccess in a Jython script invoked from the command line

OS: Windows7, Jython2.7.0FR ("Final Release")

尝试将 Gord Thompson 的解决方案与 Jython 结合使用:Manipulating an Access database from Java without ODBC

我可以让 Ucanaccess 模块在 Eclipse 中工作,但是当我从 CLI 尝试 运行ning 时却不行。

# -*- coding: utf-8 -*-
import java, sys
jars_dir = 'D:\sysadmin\Resources\Java jar files\'
sys.path.append( jars_dir + 'commons-lang-2.6.jar' )
sys.path.append( jars_dir + 'commons-logging-1.2.jar' )
sys.path.append( jars_dir + 'hsqldb.jar' )
sys.path.append( jars_dir + 'jackcess-2.1.2.jar' )
sys.path.append( jars_dir + 'ucanaccess-3.0.2.jar' )
import net.ucanaccess.jdbc.UcanaccessDriver
import net.ucanaccess
print( '# appear to have imported UcanaccessDriver' )
conn = java.sql.DriverManager.getConnection( 'jdbc:ucanaccess://D:/TESTING.mdb' )
print( '# conn OK...') 

当我在 Eclipse 中 运行 这会打印出“#conn OK”。 当我从 CLI 运行 它打印出“# appear to have imported...”但随后抛出错误:

(注意此输出已 复制 到 Eclipse:它确实是一个 CLI 运行)

有人知道我为什么会得到 "No suitable driver..." 吗?注意我在 getConnection 中尝试了各种使用反斜杠而不是正斜杠的排列...无济于事。

顺便说一句,如果这是相关的,这是我用于 运行 的 .bat 文件的摘录:

cd "%SOFTWARE_PROJECTS%\workspace\Jython scratchpad\src\jython_scratchpad_root"

REM this is probably irrelevant and doesn't seem to work with Jython2.7.0FR.  The jars are being loaded by sys.path.append, obviously
set CLASSPATH=.;"%SYSADMIN%\resources\java jar files/*"

D:\apps\jython2.7.0\bin\jython loading_test.py 

看来 sys.pathPATH 环境变量的关系大于 CLASSPATH 环境变量。以下两种方法已经过测试,可以与 Jython 2.7.0 一起使用 运行 来自 Windows 命令行的名为 "jyTest.py" 的脚本

方法 1:在启动 Jython

之前从批处理文件(或 shell 脚本)设置 CLASSPATH
SET CLASSPATH=C:/Users/Public/Downloads/UCanAccess/ucanaccess-3.0.2.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-lang-2.6.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-logging-1.1.1.jar;C:/Users/Public/Downloads/UCanAccess/lib/hsqldb.jar;C:/Users/Public/Downloads/UCanAccess/lib/jackcess-2.1.2.jar;.  
c:\jython2.7.0\bin\jython jyTest.py

(对于 Linux 等人,这将是 export CLASSPATH ...,冒号分隔符而不是分号。)

方法二:调用Jython时使用-J-cp设置CLASSPATH

c:\jython2.7.0\bin\jython -J-cp C:/Users/Public/Downloads/UCanAccess/ucanaccess-3.0.2.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-lang-2.6.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-logging-1.1.1.jar;C:/Users/Public/Downloads/UCanAccess/lib/hsqldb.jar;C:/Users/Public/Downloads/UCanAccess/lib/jackcess-2.1.2.jar;. jyTest.py

(同样,Linux 和朋友们需要 -cp 条目用冒号而不是分号分隔。)