1

ここで説明されている 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

クラスが見つからないのはなぜですか?

4

0 に答える 0