- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Windows Server 2016 上,我们尝试使用 Jython 脚本通过 JDBC 连接,但出现以下错误:
java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
RazorSQL 在同一台计算机上使用以下设置进行连接,不会出现错误:
Driver Class: com.microsoft.sqlserver.jdbc.SQLServerDriver
Driver Location: \Program Files (x86)\RazorSQL\drivers\sqlserver\sqljdbc.jar
因此,我们使用以下命令将 CLASSPATH 设置为相同位置:
set CLASSPATH=C:\Program Files (x86)\RazorSQL\drivers\sqlserver\sqljdbc.jar
...但是当运行下面的代码时 - 我们仍然得到相同的 ClassNotFound 错误。
这是我们的 Python 代码:
jclassname = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
database = "our_database_name"
db_elem = ";databaseName={}".format(database) if database else ""
host = "###.##.###.###" # ip address
port = "1433"
user = "user_name"
password = "password"
url = (
jdbc:sqlserver://{host}:{port}{db_elem}"
";user={user};password={password}".format(
host=host, port=port, db_elem=db_elem,
er=user, password=password)
)
print url
driver_args = [url]
jars = None
libs = None
db = jaydebeapi.connect(jclassname, driver_args, jars=jars,
libs=libs)
这就是我们运行 Python 脚本的方式:
C:\jython2.7.0\bin\jython.exe C:\path_to_our_script.py
RazorSQL 连接正常,但 Python 却无法连接,这是怎么回事?我们如何消除这个 CLASSPATH 错误?
最佳答案
您必须使用系统类加载器在运行时加载 JAR。
请引用this回答。
以下代码片段取自this要点。
def loadJar(jarFile):
'''load a jar at runtime using the system Classloader (needed for JDBC)
adapted from http://forum.java.sun.com/thread.jspa?threadID=300557
Author: Steve (SG) Langer Jan 2007 translated the above Java to Jython
Reference: https://wiki.python.org/jython/JythonMonthly/Articles/January2007/3
Author: seansummers@gmail.com simplified and updated for jython-2.5.3b3+
>>> loadJar('jtds-1.3.1.jar')
>>> from java import lang, sql
>>> lang.Class.forName('net.sourceforge.jtds.jdbc.Driver')
<type 'net.sourceforge.jtds.jdbc.Driver'>
>>> sql.DriverManager.getDriver('jdbc:jtds://server')
jTDS 1.3.1
'''
from java import io, net, lang
u = io.File(jarFile).toURL() if type(jarFile) <> net.URL else jarFile
m = net.URLClassLoader.getDeclaredMethod('addURL', [net.URL])
m.accessible = 1
m.invoke(lang.ClassLoader.getSystemClassLoader(), [u])
if __name__ == '__main__':
import doctest
doctest.testmod()
另请参阅 - https://wiki.python.org/jython/JythonMonthly/Articles/January2007/3
关于java - 为什么 CLASSPATH 对于 Python 失败但对于 RazorSQL 却有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402397/
我用this procedure安装了Derby 安装后,ij命令正常工作,并且与数据库的连接正常。 我想用GUI查看数据库表,所以我下载了RazorSQL但是在添加配置文件的步骤(如下面的图片)中,
我正在使用 RazorSQL,当我从终端运行它时,它无法打开并引发以下异常: java.awt.HeadlessException at java.awt.GraphicsEnvironmen
在 Windows Server 2016 上,我们尝试使用 Jython 脚本通过 JDBC 连接,但出现以下错误: java.lang.ClassNotFoundException: java.l
我使用 Sybase SQL Anywhere 创建了一个 .db 文件,其中包含大量表和信息。现在,我无法再访问该软件了。所以我得到了 RazorSQL,它在其主页上声明它可以查询 SQL Anyw
我是一名优秀的程序员,十分优秀!