Class.forName(“org.postgresql.Driver”) error

前端 未结 3 919
青春惊慌失措
青春惊慌失措 2021-01-21 22:19

I have simple class. Then I try to compile and run it I see ClassNotFoundException.

import java.sql.*;

public class DBProcessor{

private static String serverAd         


        
3条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-21 22:29

    On the command line, this

    java DBProcessor
    

    should be

    java -cp .;postgresql.jar DBProcessor
    

    And, because it includes java.sql.Driver, when you have it working you could remove

    // try {
    //    Class.forName("org.postgresql.Driver");
    // } catch (ClassNotFoundException e) {
    //    System.err.println("Where is your PostgreSQL JDBC Driver? "
    //            + "Include in your library path!");
    //    e.printStackTrace();
    // }
    

    Per the DriverManager Javadoc,

    The DriverManager methods getConnection and getDrivers have been enhanced to support the Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers must include the file META-INF/services/java.sql.Driver. This file contains the name of the JDBC drivers implementation of java.sql.Driver. For example, to load the my.sql.Driver class, the META-INF/services/java.sql.Driver file would contain the entry:

     my.sql.Driver
    

    Applications no longer need to explictly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.

提交回复
热议问题