首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为jjs/Nashorn javascript指定CLASSPATH?

如何为jjs/Nashorn javascript指定CLASSPATH?
EN

Stack Overflow用户
提问于 2014-06-18 08:17:43
回答 1查看 2.9K关注 0票数 0

我想在我的Nashorn javascript中加载一个第三方类,它作为一个可激发的shell脚本运行,我检查下面的线程,但是没有得到提示。

如何访问Nashorn how to access methods from my class inside javascript in Nashorn中javascript中的类方法

这是我的剧本

代码语言:javascript
复制
#!/usr/java/default/bin/jjs -scripting

var db_url = "jdbc:sqlserver://1.2.3.4:1433;databaseName=email;user=email;password=email;";
var user = "email";
var pass = "email";

var conn = java.sql.DriverManager.getConnection(db_url,user,pass);
var stmt = conn.prepareStatement("select version()");
var rs = stmt.executeQuery();

while(rs.next()){
    var name = rs.getString(1);
    println("version=" + name);
}
rs.close();
stmt.close();
conn.close();

运行时获取此错误

线程"main“java.lang.RuntimeException中的异常: java.sql.SQLException:没有找到适合于java.lang.RuntimeException的驱动程序在jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:382) at jdk.nashorn.tools.Shell.apply(Shell.java:381)在jdk.nashorn.tools.Shell.runScripts(Shell.java:310) at jdk.nashorn.tools.Shell.run(Shell.java:166)在jdk.nashorn.tools.Shell.main(Shell.java:130)在jdk。nashorn.tools.Shell.main(Shell.java:109)由: java.sql.SQLException:没有找到适合jdbc的驱动程序:sqlserver://12.3.4:1433;databaseName=email;user=email;password=email;在java.sql.DriverManager.getConnection(DriverManager.java:689) at java.sql.DriverManager.getConnection(DriverManager.java:247) at java.lang.invoke.MethodHandleImpl$BindCaller$T/802581203.invoke_V(MethodHandleImpl.java:960) at jdk.nashorn.internal.scripts.Script$jdbc_test.runScript(./jdbc-test.js:7) at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:498)在jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:206) at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:378) .还有5

EN

回答 1

Stack Overflow用户

发布于 2014-11-12 19:58:08

除了在类路径中包含JDBC驱动程序jar之外,还必须加载驱动程序类,以便它能够向JDBC注册。

代码语言:javascript
复制
#!/usr/bin/env jjs -scripting -J-Djava.class.path=/usr/local/java/sqljdbc-1.1.1320.0.jar

// jjs requires -- to start passing arguments to the script in Java 8u40b12

if ($ARG.length < 4) {
  print("Usage: ${__FILE__} -- server database user password");
  exit(1);
}
var server = $ARG[0],
    database = $ARG[1],
    user = $ARG[2],
    pass = $ARG[3];

var db_url = "jdbc:sqlserver://${server}:1433;databaseName=${database};";

java.lang.Class.forName('com.microsoft.sqlserver.jdbc.SQLServerDriver')

var conn = java.sql.DriverManager.getConnection(db_url,user,pass);
var stmt = conn.prepareStatement("select version()");
var rs = stmt.executeQuery();

while(rs.next()){
    var name = rs.getString(1);
    println("version=" + name);
}
rs.close();
stmt.close();
conn.close();

所缺少的是在尝试创建连接之前对classForName(String)的调用。

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

https://stackoverflow.com/questions/24280423

复制
相关文章

相似问题

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