再次:使用Play 2.0/Java在Heroku上找不到Postgres驱动程序

use*_*028 1 java postgresql heroku playframework

亲爱的Heroku/Play专家,

我是Heroku和Play 2.0(使用Java)的新手,我正在尝试启动并运行我的第一个支持db的Heroku应用程序(我正在使用zentask应用程序进行学习).我一直在阅读stackoverflow和@James Ward的Play2torial上的相关文档,但似乎无法找到我遇到的问题的解决方案:

当我将文件推送到Heroku时,我总是得到postgres驱动程序的"找不到驱动程序"错误 - 就像它没有安装在Heroku上一样.我已经尝试过你们,专家们提出的所有解决方案,但没有任何效果.我甚至尝试将jdbc驱动程序jar复制到lib文件夹中以补偿丢失jdbc jar但是我得到一些关于缺少验证的错误 - 这可能是因为我9.1-901-1.jdbc4在postgres网站上找不到jar .在任何情况下,你的解决方案建议这个postgres驱动程序应该是开箱即用的标准设置Heroku所以我有点沮丧...

因此,请在下面找到包含所涉及文件的"驱动程序未找到错误"以及生成的错误消息.

我非常非常感谢你的建议.非常感谢提前!最好,

奥拉西奥


这是我的文件:

Procfile:

web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS} -Dconfig.resource=application.conf
Run Code Online (Sandbox Code Playgroud)

Build.scala:

import sbt._
import Keys._

import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "Myapp"
    val appVersion      = "1.0"

    val main = PlayProject(appName, appVersion, mainLang = JAVA)

    val appDependencies = Seq(
      "postgresql" % "postgresql" % "9.1-901-1.jdbc4"
    )
}
Run Code Online (Sandbox Code Playgroud)

application.conf:

application.name=myapp

application.secret="some secret"

db.default.driver=org.postgresql.Driver

db.default.url="jdbc:postgresql://some URL"

ebean.default="models.*"

logger=ERROR

logger.play=INFO

logger.application=DEBUG
Run Code Online (Sandbox Code Playgroud)

错误信息:

2012-11-23T17:39:35+00:00 heroku[web.1]: State changed from crashed to starting
2012-11-23T17:39:41+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=${PORT} ${JAVA_OPTS} -Dconfig.resource=application.conf`
2012-11-23T17:39:42+00:00 app[web.1]: Play server process ID is 2
2012-11-23T17:39:43+00:00 app[web.1]: Oops, cannot start the server.
2012-11-23T17:39:43+00:00 app[web.1]: Configuration error: Configuration error [Driver not found: [org.postgresql.Driver]]
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:71)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.Configuration.reportError(Configuration.scala:258)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPApi.play$api$db$BoneCPApi$$register(DB.scala:283)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPApi$$anonfun$4.apply(DB.scala:386)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPApi$$anonfun$4.apply(DB.scala:390)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.immutable.Set$Set1.foreach(Set.scala:86)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPPlugin.play$api$db$BoneCPPlugin$$dbApi(DB.scala:211)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPPlugin.onStart(DB.scala:240)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.Play$$anonfun$start$1.apply(Play.scala:60)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.immutable.Set$Set1.map(Set.scala:73)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.immutable.Set$Set1.scala$collection$SetLike$$super$map(Set.scala:73)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.SetLike$class.map(SetLike.scala:93)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPApi.<init>(DB.scala:386)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.Play$$anonfun$start$1.apply(Play.scala:60)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.Play$.start(Play.scala:60)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.core.StaticApplication.<init>(ApplicationProvider.scala:51)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:153)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.core.server.NettyServer$.main(NettyServer.scala:152)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.collection.immutable.List.foreach(List.scala:45)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.core.server.NettyServer$.createServer(NettyServer.scala:132)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:152)
2012-11-23T17:39:43+00:00 app[web.1]:   at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
2012-11-23T17:39:43+00:00 app[web.1]:   at scala.Option.map(Option.scala:133)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.core.server.NettyServer.main(NettyServer.scala)
2012-11-23T17:39:43+00:00 app[web.1]: Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
2012-11-23T17:39:43+00:00 app[web.1]:   at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
2012-11-23T17:39:43+00:00 app[web.1]:   at java.security.AccessController.doPrivileged(Native Method)
2012-11-23T17:39:43+00:00 app[web.1]:   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
2012-11-23T17:39:43+00:00 app[web.1]:   ... 24 more
2012-11-23T17:39:43+00:00 app[web.1]:   at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
2012-11-23T17:39:43+00:00 app[web.1]:   at java.lang.Class.forName(Class.java:264)
2012-11-23T17:39:43+00:00 app[web.1]:   at play.api.db.BoneCPApi.play$api$db$BoneCPApi$$register(DB.scala:281)
2012-11-23T17:39:43+00:00 app[web.1]:   at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
2012-11-23T17:39:43+00:00 app[web.1]:   at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
2012-11-23T17:39:43+00:00 app[web.1]:   at java.lang.Class.forName0(Native Method)
2012-11-23T17:39:44+00:00 heroku[web.1]: Process exited with status 255
2012-11-23T17:39:44+00:00 heroku[web.1]: State changed from starting to crashed
2012-11-23T17:40:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=SOME_URL.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
Run Code Online (Sandbox Code Playgroud)

use*_*028 5

感谢伟大的Heroku支持团队,我可以为您提供解决方案:显然,我没有在PlayProject中指定我的appDependencies.所以我不得不将我的appDependencies添加到Build.scala中的PlayProject,如下所示:

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA)
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助遇到同样问题的每个人:)

干杯,奥拉西奥