SBT 스칼라 프로젝트에서 MySQL JDBC 드라이버를 사용하는 방법?
SBT 세션 중에 프로젝트를 처음 실행하면 MySQL 데이터베이스에 액세스하려고 하면 다음 예외가 발생합니다.
자바 langNoClassDefFFound 오류: scala/Ordered
다시 실행하면(그리고 그 후에도 동일한 SBT 세션 중에) 다음과 같은 메시지가 표시됩니다.
java.sql.SQL 예외:jdbc:mysql://localhost/...에 적합한 드라이버를 찾을 수 없습니다.
NetBeans를 사용할 때도 동일한 코드가 정상적으로 작동했습니다.이제 SBT를 빌드에 사용하고 Kate를 사용하여 프로젝트를 수동으로 편집하고 관리하면 이러한 런타임 오류가 발생합니다.
MySQL JDBC 드라이버(MySQL.com 에서 바로 download됨) JAR은 프로젝트의 lib 디렉토리에 있으며 내가 거기에 놓은 다른 모든 라이브러리는 정상적으로 작동합니다.
코드는 다음과 같습니다.
import java.sql._
...
// read
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...")
val st : Statement = dbc.createStatement
val rs : ResultSet = st.executeQuery("SELECT ...")
if(rs.first) result = rs.getDouble("field")
dbc.close
...
// write
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...")
val st : Statement = dbc.createStatement
st.execute("UPDATE ...")
dbc.close
꽤 관련이 있어 보이지만 여전히 답이 없는 질문을 보았습니다.
SBT 프로젝트 클래스에는 다음과 같은 줄이 있어야 합니다.
// Declare MySQL connector Dependency
val mysql = "mysql" % "mysql-connector-java" % "5.1.12"
MySQL에 대한 JDBC 드라이버 JAR 파일을 가져옵니다.
운전기사를 실었습니까?이 Util 클래스를 사용하여 연결을 가져올 경우 드라이버가 한 번만 로드됩니다.
// Util Class
object DaoUtil {
import java.sql.{DriverManager, Connection}
private var driverLoaded = false
private def loadDriver() {
try{
Class.forName("com.mysql.jdbc.Driver").newInstance
driverLoaded = true
}catch{
case e: Exception => {
println("ERROR: Driver not available: " + e.getMessage)
throw e
}
}
}
def getConnection(dbc: DbConnection): Connection = {
// Only load driver first time
this.synchronized {
if(! driverLoaded) loadDriver()
}
// Get the connection
try{
DriverManager.getConnection(dbc.getConnectionString)
}catch{
case e: Exception => {
println("ERROR: No connection: " + e.getMessage)
throw e
}
}
}
}
코드는 제가 얼마 전에 작성한 간단한 SBT - MySQL 튜토리얼에서 가져온 것입니다.전체 자습서를 다운로드하려면 http://github.com/ollekullberg/SimpleOrder 을 참조하십시오.
project/plugins.sbt 파일에 줄 추가
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.12"
그런 다음 sbt 셸에 있으면 재시작합니다.
MySQL 종속성을 구성해야 합니다.build.sbt
. 현재 스타일은 다음과 같이 라이브러리 종속성을 선언하는 것입니다.
libraryDependencies ++= {
val liftVersion = "2.5.1"
Seq(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile",
//etc
)
}
안에 다음을 추가합니다.Seq
mysql을 추가하는 방법:
"mysql" % "mysql-connector-java" % "5.1.+"
참고하세요.+
최신 마이너 버전을 얻을 수 있음을 의미합니다. 위의 모든 것.5.1
,예를 들어5.1.27
(작성 시점의 현재 버전).
언급URL : https://stackoverflow.com/questions/3896153/how-to-use-mysql-jdbc-driver-in-an-sbt-scala-project
'programing' 카테고리의 다른 글
단일 쿼리로 mysql 테이블에서 모든 부모 찾기(Recursive Query) (0) | 2023.10.24 |
---|---|
DBMS Profiler를 사용한 PL/SQL 커버리지 보고서 구축 (0) | 2023.10.24 |
엄격한 별칭 규칙이 잘못 지정되었습니까? (0) | 2023.10.24 |
NgModule을 찾을 수 없습니다.가져오기 건너뛰기 옵션을 사용하여 NgModule에서 가져오기 건너뜁니다. (0) | 2023.10.24 |
특정 지점에서 자동 증분을 시작하려면 어떻게 해야 합니까? (0) | 2023.10.24 |