我想在我的Nashorn javascript中加载一个第三方类,它作为一个可激发的shell脚本运行,我检查下面的线程,但是没有得到提示。
如何访问Nashorn how to access methods from my class inside javascript in Nashorn中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
发布于 2014-11-12 19:58:08
除了在类路径中包含JDBC驱动程序jar之外,还必须加载驱动程序类,以便它能够向JDBC注册。
#!/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)的调用。
https://stackoverflow.com/questions/24280423
复制相似问题