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

Hic*_*ick 4 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"
Run Code Online (Sandbox Code Playgroud)

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

Cra*_*ger 6

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

考虑添加一些调试代码,打印出System.getProperty("java.class.path")应用启动期间的内容.还添加一个块,它可以执行以下操作:

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

这应该告诉你关于班级可见性的一些信息.由于现代JVM和框架上类加载的复杂性,它不具有决定性 - 有太多的类加载器.


Mau*_*ähä 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  
    )

}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

play clean
play compile
play eclipsify
play ~run
Run Code Online (Sandbox Code Playgroud)

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