2013-10-08 42 views
0

我得到了java.lang.ClassNotFoundException:org.postgresql.Driver當我嘗試跟隨在http://slick.typesafe.com/doc/1.0.1/sql.htmlClassNotFoundException的用油滑,SBT,和Postgres

「素SQL」比如我在下面我build.sbt libraryDependencies: 「PostgreSQL的」 % 「PostgreSQL的」 % 「9.1-901.jdbc4」

我使用下面的行到位的例子的H2駕駛員線:

Database.forURL(「JDBC:在PostgreSQL :// localhost/myDatabase:mySchema:myPassword「,driver =」org.postgresql.Driver「)withSession {...

不知道我在做什麼錯在這裏...

回答

0

這清楚地顯示了org.postgresql.Driver類(在jar中可用)不在CLASSPATH中。它是獨立的還是可用於任何服務器?

如果獨立應用程序,put jar in CLASSPATH 如果應用程序/ Web服務器可用,put jar in webapp lib directory

+0

該驅動程序位於CLASSPATH中,但我的印象是這不應該與sbt有關,即使在classpath中沒有任何內容,依賴關係行也應該處理該行。它當然適用於靈活的依賴性,即使它不在CLASSPATH中 – Turar

2

我同意,司機是不是在classpath中,所以有可能是您的SBT配置有些不妥。

但是,依賴關係"postgresql" % "postgresql" % "9.1-901.jdbc4"看起來不錯,而且該jar似乎包含驅動程序。所以看起來這條線簡單地被忽略了。

+0

你可能是對的,sbt config一定有什麼問題,不確定是什麼。我添加了一個導入行:import org.postgresql.Driver,它工作。儘管這個例子清楚地表明不需要。我認爲問題在於驅動程序作爲String傳遞到forURL調用中,因此未編譯,從而導致在編譯時無法解析依賴關係。 – Turar

+0

不需要「在編譯時解析依賴關係」,在編譯時和運行時之間更改類的版本是完全合法的。在運行時從完全限定名稱加載一個類也是完全可以的 –

+0

我同意,但這對我而言並不適用,按照我的原始文章。仍然不知道爲什麼,但編譯時解決方法工作,所以我繼續前進。謝謝! – Turar