Using UCanAccess in a Jython script invoked from the command line

旧街凉风 提交于 2019-12-20 04:08:21

问题


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

Trying to use Gord Thompson's solution with Jython: Manipulating an Access database from Java without ODBC

I can get the Ucanaccess module to work in Eclipse, but not when I try running from the CLI.

# -*- 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...') 

This prints out "# conn OK" when I run this in Eclipse. When I run it from the CLI it prints out "# appear to have imported..." but then an error is thrown:

(NB this output was copied to Eclipse: it is indeed a CLI run)

Anyone got any idea why I might be getting "No suitable driver..."? NB I tried various permutations with backward slashes instead of forward ones in getConnection... to no avail.

By the way, in case this is relevant, this is an extract from the .bat file I'm using to run the thing:

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 

回答1:


It appears that sys.path has more to do with the PATH environment variable than the CLASSPATH environment variable. The following two methods have been tested and do work with Jython 2.7.0 to run a script called "jyTest.py" from the Windows command line

Method 1: Set the CLASSPATH from a batch file (or shell script) before launching Jython

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

(For Linux et. al. that would be export CLASSPATH ..., and colon separators instead of semicolons.)

Method 2: Use -J-cp to set the CLASSPATH when invoking Jython

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

(Again, Linux and friends would need the -cp entries to be separated by colons instead of semicolons.)



来源:https://stackoverflow.com/questions/33438374/using-ucanaccess-in-a-jython-script-invoked-from-the-command-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!