ここで説明されている JDBC Microsoft SQL 接続の例を実行しようとしています
import java.sql.*;
public class TestAzure {
public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}
残念ながら、これは失敗します:
overlord@overlord-datanode1:~/Documents/hadoop/scripts/03_azure_sql$ java TestAzure -cp ./
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at TestAzure.main(TestAzure.java:18)
ここの JDBC ドライバーの説明で解決策を見つけようとしました。
-cp ./ を使用して、クラスパスをローカル ディレクトリに設定しました。私はまた、この提案を試しました
sqljdbc4.jar は同じフォルダーにあります + クラスが内部にあることを確認しました:
overlord@overlord-datanode1:~/Documents/hadoop/scripts/03_azure_sql$ jar tf sqljdbc4.jar | grep SQLServerDriver
com/microsoft/sqlserver/jdbc/SQLServerDriver.class
com/microsoft/sqlserver/jdbc/SQLServerDriverPropertyInfo.class
クラスが見つからないのはなぜですか?