在eclipse中运行示例MySQL代码时出现ClassNotFoundException

时间:2015-01-20 21:29:35

标签: java mysql eclipse exception

我正在尝试编译并运行下面显示的示例代码,但它给了我一个ClassNotFoundException。我想知道在eclipse中解决这个问题的最佳方法是什么,因为我是该软件的新手。我在网站上阅读了很多关于这个例外的答案以及可能导致它的原因,但是我无法理解很多解决方案,所以如果有人能给我一个简单的解释来解决导致问题的原因,我将不胜感激。谢谢。

public class Model{

    public static void main(String[] args) throws Exception
    {
       Model myDbTest = new Model();
       myDbTest.displayDbProperties();
    }

     private java.sql.Connection  con = null;
     private final String url = "jdbc:microsoft:sqlserver://";
     private final String serverName= "localhost";
     private final String portNumber = "1433";
     private final String databaseName= "pubs";
     private final String userName = "user";
     private final String password = "password";
     // Informs the driver to use server a side-cursor, 
     // which permits more than one active statement 
     // on a connection.
     private final String selectMethod = "cursor"; 

     // Constructor
     public Model(){}

     private String getConnectionUrl(){
          return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
     }

     private java.sql.Connection getConnection(){
          try{
               Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
               con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
               if(con!=null) System.out.println("Connection Successful!");
          }catch(Exception e){
               e.printStackTrace();
               System.out.println("Error Trace in getConnection() : " + e.getMessage());
         }
          return con;
      }

     /*
          Display the driver properties, database details 
     */ 

     public void displayDbProperties(){
          java.sql.DatabaseMetaData dm = null;
          java.sql.ResultSet rs = null;
          try{
               con= this.getConnection();
               if(con!=null){
                    dm = con.getMetaData();
                    System.out.println("Driver Information");
                    System.out.println("\tDriver Name: "+ dm.getDriverName());
                    System.out.println("\tDriver Version: "+ dm.getDriverVersion ());
                    System.out.println("\nDatabase Information ");
                    System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());
                    System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());
                    System.out.println("Avalilable Catalogs ");
                    rs = dm.getCatalogs();
                    while(rs.next()){
                         System.out.println("\tcatalog: "+ rs.getString(1));
                    } 
                    rs.close();
                    rs = null;
                    closeConnection();
               }else System.out.println("Error: No active Connection");
          }catch(Exception e){
               e.printStackTrace();
          }
          dm=null;
     }     

     private void closeConnection(){
          try{
               if(con!=null)
                    con.close();
               con=null;
          }catch(Exception e){
               e.printStackTrace();
          }
     }
}

错误打印为:

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriverError Trace in getConnection() : com.microsoft.jdbc.sqlserver.SQLServerDriver
Error: No active Connection

    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at Model.getConnection(Model.java:30)
    at Model.displayDbProperties(Model.java:48)
    at Model.main(Model.java:6)

2 个答案:

答案 0 :(得分:0)

在运行源代码时,看起来JDBC驱动程序的JAR未包含在类路径中。但正如其他人所提到的,可能需要进行堆栈跟踪来进一步帮助你。

答案 1 :(得分:-1)

看起来你的.classpath

中没有MsSQLServer jdbc驱动程序

here

相关问题