为什么Play框架会出现“Driver not found: [org.postgresql.Driver]”的错误?

4

This is my 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个回答

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来查看它是否已正确加载。


6
我认为PostgreSQL驱动程序实际上并没有在您的类路径中,但由于您没有显示错误消息的确切文本,很难确定。如果您能够(a)显示完整错误消息和回溯的确切复制和粘贴文本;以及(b)准确地显示您放置PgJDBC jar的位置,将会有所帮助。
考虑添加一些调试代码,在应用程序启动期间打印出System.getProperty("java.class.path")的内容。还可以添加一个块,执行类似以下操作的内容:
try {
    Class.forName("org.postgresql.Driver")
} catch (ClassNotFoundException ex) {
    // Log or abort here
}

这应该可以告诉你一些关于类的可见性的信息。由于现代JVM和框架上的类加载的复杂性,它不会是确定的 - 只是因为有太多的类加载器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接