我正在使用基于Eclipse的工具,该工具提供了一个交互式Jython shell,用于针对内部数据模型进行脚本和数据分析。
我试图编写一个将结果导出到某种形式的数据库的脚本,所以我试图在Jython中使用内置的com.ziclix.python.sql
包来提供接口和Xerial SQLite的JDBC连接器(https://github.com/xerial/sqlite-jdbc)提供后端。
使用标准命令行Jython解释器在第三方工具之外运行时,下面的脚本运行得很好,包括依赖于importJar()
hack,这通常用于解决Jython并不总是使用用户{{ 1}}使用CLASSPATH
运行时:
java -jar <blah>
...但是从Eclipse内部的插件运行时失败,其中from com.ziclix.python.sql import zxJDBC
from java.net import URL, URLClassLoader
from java.lang import ClassLoader
from java.io import File
JDBC_URL = "jdbc:sqlite:test.db"
JDBC_DRIVER = "org.sqlite.JDBC"
JDBC_JAR = "E:/sqlite-jdbc-3.21.0.jar"
# Import Jar file into local class path
def importJar(jarFile):
m = URLClassLoader.getDeclaredMethod("addURL", [URL])
m.accessible = 1
m.invoke(ClassLoader.getSystemClassLoader(), [File(jarFile).toURL()])
def main():
try:
importJar(JDBC_JAR)
dbConn = zxJDBC.connect(JDBC_URL, None, None, JDBC_DRIVER)
cursor = dbConn.cursor()
# Do something useful
cursor.close()
dbConn.close()
except zxJDBC.DatabaseError, msg:
print msg
if __name__ == '__main__':
main()
调用错误:
zxJDBC.connect()
如果我将Jar文件添加到driver [org.sqlite.JDBC] not found
环境,我可以在Python脚本中成功JYTHONPATH
,但是在JDBC驱动程序管理器的Java端,connect调用仍然失败。
为了完整起见,Jar文件的完整路径位于import org.sqlite.JDBC
,CLASSPATH
和PYTHONPATH
环境变量...
有什么想法吗?