2015-10-30 1 views
1

OS: Windows7, Jython2.7.0FR ("Final Release")Использование UCanAccess в сценарии Jython вызывается из командной строки

Попытка использовать решение Горд Томпсона с Jython: Manipulating an Access database from Java without ODBC

я могу получить Модуль Ucanaccess работает в Eclipse, но не тогда, когда я пытаюсь запустить из 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...') 

Это печатает «# conn OK», когда я запускаю это в Eclipse. Когда я запускаю его из командной строки он печатает «# появляются ввез ...», но потом выдается ошибка:

enter image description here

(NB этот вывод был скопирована в Eclipse: это действительно, CLI)

У кого-нибудь есть идея, почему я могу получить «Нет подходящего драйвера ...»? NB Я пробовал различные перестановки с обратными косыми чертами вместо передовых в 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 
+0

JDBC URL является правильным, что версия Java работает позади? – jamadei

+0

спасибо. Простите меня, если я не совсем понимаю, как ответить на ваш вопрос: OS JAVA_HOME Env Var указывает на jdk1.7.0_79. В Windows PATH Env Var входит jdk1.7.0_79 \ jre \ bin, а что касается Eclipse, я немного недооцениваю, как он ищет JRE при запуске Jython-проекта, но в разделе «Настройки» -> Java -> Установлено JREs, опять же он указывает на jdk1.7.0_79. Вы предполагаете, что я на самом деле ** обязан ** переходить на Java 8 ??? –

+0

В своем пакетном файле попробуйте установить CLASSPATH для включения отдельных файлов JAR. Я просто попробовал [это] (http://pastebin.com/GmwFxtV8), и это сработало для меня. –

ответ

2

Вероятно, что sys.path имеет больше общего с PATH чем переменная среды CLASSPATH. Следующие два метода были протестированы и работают с Jython 2.7.0 для запуска сценария под названием «jyTest.py» из командной строки Windows

Метод 1: Установите CLASSPATH из командного файла (или сценария оболочки) перед запуском 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 

(.. для Linux и др, которые бы export CLASSPATH ... и ободочной сепараторы вместо запятой.)

Метод 2: Использование -J-cp для установки CLASSPATH при вызове 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 

(Опять же, Linux и друзья будут нужны -cp записи должны быть разделены двоеточиями вместо запятой.)

+0

Спасибо ... нашел проблему: я не понял, что ucanaccess jar входит в каталог, в то время как остальные 4 бана входят в подкаталог под названием lib. Также нашли, отчасти из-за вашего ответа здесь, ответ на общие вопросы, которые у меня были с загрузочными баночками с 2.7.0FR: косые черты и пути без пробелов ... (похоже, это изменение относительно 2.7b1). –

Смежные вопросы