2017-08-24 52 views
0

感谢您的任何帮助,我是一个完整的noob在这里,但试图学习。下面的代码只是试图创建一个到数据库的连接。我收到此错误回:org.postgres.Driver类例外 - 初学者

java.lang.ClassNotFoundException: org.postgres.Driver 
    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 CreateDB.main(CreateDB.java:11) 
java.lang.ClassNotFoundException: org.postgres.Driver 

已经研究了网上的解决方案,我遇到是检查库添加到构建路径。我可以证实我有(我认为)。为此,我右键单击了项目 - >属性 - > Java构建路径 - >外部JARS并导航到位于“... \ eclipse-workspace \ libraries \”中的postgresql - 42.41.4..jar。 可以看到该库被添加到项目中的引用库下。 现在还没有线索卡住了。任何帮助真诚赞赏。 org.postgresql.Driver

我从这里https://www.tutorialspoint.com/postgresql/postgresql_java.htm

import java.sql.Connection; 
import java.sql.DriverManager; 

public class CreateDB { 
    public static void main(String Args[]) { 
     Connection c = null; 
     try { 
      Class.forName("org.postgres.Driver"); 
      c = DriverManager.getConnection("jdbc.postgresql://localhost:1080/VEM", "postgres", "Diablo12"); //creates connection with U&P 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.err.println(e.getClass().getName() +": " + e.getMessage()); 
      System.exit(0); 
     } 
     System.out.println("Database opened successfully"); 
    } 
} 
+0

除了错误的类名以外(参见Henry的回答):自从Java 6 –

回答

1

正确的驱动程序名称是学习。所以,你的代码应该是这样的:

import java.sql.Connection; 
import java.sql.DriverManager; 

public class CreateDB { 
    public static void main(String args[]) { 
     Connection c = null; 
     try { 
      Class.forName("org.postgresql.Driver"); 
      c = DriverManager.getConnection("jdbc.postgresql://localhost:1080/VEM", "postgres", "Diablo12"); //creates connection with U&P 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.err.println(e.getClass().getName() +": " + e.getMessage()); 
      System.exit(0); 
     } 
     System.out.println("Database opened successfully"); 
    } 
} 

假驱动程序的名称引起的java扔ClassNotFoundException因为传递的名称的类不能在类路径中找到。 自从Java 6以来,不再需要通过Class.forName()加载驱动程序,如在他的评论中指出的a_horse_with_no_name

+1

以后不再需要''Class.forName()'或者干脆省略'Class.forName()'这个不再需要 –

+1

@a_horse_with_no_name这是真的。我解释它是因为这是失败的原因。 –