为什么播放失败并显示“未找到驱动程序:[org.postgresql.Driver]”?

时间:2012-08-19 12:09:12

标签: postgresql playframework

这是我的application.conf:

db.default.driver=org.postgresql.Driver  
db.default.url="postgres://postgres:postgres@localhost:5432/postgres"
db.default.user="postgres"
db.default.password= "postgres"

我下载了postgresql-9.1-902.jdbc4.jar。将它作为外部jar添加到我的jar文件中。它仍然显示我发现驱动程序未找到此错误。救命?

2 个答案:

答案 0 :(得分:6)

我说PostgreSQL驱动程序毕竟不是在你的类路径上,但是由于你还没有显示错误信息的确切文字,所以很难确定。如果您能够(a)显示完整错误消息和追溯的完全复制和粘贴文本,将会有所帮助; (b)显示完全放置PgJDBC罐子的地方。

考虑添加一些调试代码,在您的应用启动期间打印出System.getProperty("java.class.path")的内容。还要添加一个类似于以下内容的块:

try {
    Class.forName("org.postgresql.Driver")
} catch (ClassNotFoundException ex) {
    // Log or abort here
}

这应该告诉你关于课堂知名度的一些信息。由于现代JVM和框架上的类加载的复杂性,它不会是决定性的 - 有太多的类加载器。

答案 1 :(得分:6)

我在我的项目中使用postgresql 9.1-901.jdbc4,我这样配置:

<强> Build.scala:

import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "project_name"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      // Add your project dependencies here,
      "postgresql" % "postgresql" % "9.1-901.jdbc4"
    )

    val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
      // Add your own project settings here  
    )

}

<强> application.conf

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/project_name"
db.default.user=postgres
db.default.password=mypw
db.default.partitionCount=1
db.default.maxConnectionsPerPartition=5
db.default.minConnectionsPerPartition=5

然后我在使用它时使用了以下组合:

play clean
play compile
play eclipsify
play ~run

或者,您可以在此之后键入play dependencies以查看其是否已正确加载。