首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CLASSPATH在Python中失败,而在RazorSQL上工作呢?

为什么CLASSPATH在Python中失败,而在RazorSQL上工作呢?
EN

Stack Overflow用户
提问于 2019-12-19 02:03:31
回答 1查看 205关注 0票数 1

在Windows 2016上,我们试图使用Jython脚本通过JDBC进行连接,但是出现了以下错误:

java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

在同一台计算机上的RazorSQL使用以下设置进行连接,没有出错:

代码语言:javascript
复制
Driver Class: com.microsoft.sqlserver.jdbc.SQLServerDriver 
Driver Location: \Program Files (x86)\RazorSQL\drivers\sqlserver\sqljdbc.jar

因此,我们使用以下命令将CLASSPATH设置为相同的位置:

代码语言:javascript
复制
set CLASSPATH=C:\Program Files (x86)\RazorSQL\drivers\sqlserver\sqljdbc.jar

当运行下面的代码时,...but -我们仍然会得到相同的ClassNotFound错误。

这是我们的Python代码:

代码语言:javascript
复制
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脚本的方式:

代码语言:javascript
复制
C:\jython2.7.0\bin\jython.exe C:\path_to_our_script.py

RazorSQL是如何连接得很好的--但不知怎么的Python不能?如何删除这个CLASSPATH错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-19 16:44:30

您必须在运行时使用加载JAR。

请参考的答案。

下面的代码片段来自 Gist。

def loadJar(jarFile):‘在运行时使用http://forum.java.sun.com/thread.jspa?threadID=300557作者改编的系统类加载器(需要JDBC)加载jar : Steve (SG) Langer Jan 2007将上述Java翻译为Jython参考:https://wiki.python.org/jython/JythonMonthly/Articles/January2007/3 Author: seansummers@gmail.com简化并更新了jython-2.5.3b3+ >>> loadJar('jtds-1.3.1.jar') java导入lang,来自java导入io,net,lang u= io.File( jarFile ).toURL() if类型(JarFile) <> net.URL else jarFile m= net.URLClassLoader.getDeclaredMethod('addURL',的sql >>> jTDS >>>jTDS 1.3.1‘“( net.URL) m.accessible =1 m.accessible u)如果__name__ ==‘__main_’:导入doctest doctest.testmod()

还请看- https://wiki.python.org/jython/JythonMonthly/Articles/January2007/3

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59402397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档