2014-06-18 4 views
0

흥미 진진한 shell script.i로 실행되는 내 Nashorn javascript에서 제 3 자 클래스를로드하려고합니다. 아래 스레드를 확인하지만 힌트가 없습니다.jjs/Nashorn javascript에 대한 CLASSPATH를 지정하는 방법은 무엇입니까?

스레드에서

예외를들이받은 동안 여기 how to access methods from my class inside javascript in Nashorn

Nashorn에서 자바 스크립트 안에 내 클래스에서 메서드에 액세스하는 방법을 이 오류가 내 스크립트

#!/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(); 

는 "주 "java.lang.RuntimeException : java.sql.SQLException : 적절한 드라이버 없음 에 대해 jdbc : sqlserver : //1.2.3.4 : 1433; databaseName = 전자 메일; 사용자 = 전자 메일; 암호 = 전자 메일; at jdk.nashorn.internal.runtime.ScriptRuntime.apply (ScriptRuntime.java:382) at jdk.nashorn.tools.Shell.apply (Shell.java:381) at jdk.nashorn.tools.Shell.runScripts (Shell.java : 310) at jdk.nashorn.tools.Shell.run (Shell.java:166) at jdk.nashorn.tools.Shell.main (Shell.java:130) at jdk.nashorn.tools. Shell.main (Shell.java:109) 발생 원인 : java.sql.SQLException : 에 적합한 드라이버가 없습니다. jdbc : sqlserver : //12.3.4 : 1433; databaseName = email; user = email; password = email; at 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.ScriptRuntime.apply (ScriptRuntime.java:378) 에서 jdk.nashorn.internal.runtime.ScriptFunction.invoke (ScriptFunction.java:206) 에서 ... 5 더

+0

'-classpath' 스위치를 시도하십시오 - [jjs documentation] (http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jjs.html) – McDowell

+0

둘 다 「#!/usr/java/default/bin/jjs -scripting --classpath /opt/sqljdbc4.jar‧andandness#!/usr/java/default/bin/jjs --classpath /opt/sqljdbc4.jar-scripting "do not work – ncowboy

+2

시도해보십시오. jjs -J-Djava.class.path = - 이렇게하면 'java'가 classpath (jj와 마찬가지로)를 보게됩니다. – wickund

답변

1

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) 호출했다.