programing

SBT 스칼라 프로젝트에서 MySQL JDBC 드라이버를 사용하는 방법?

telebox 2023. 10. 24. 21:16
반응형

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
  )
}

안에 다음을 추가합니다.Seqmysql을 추가하는 방법:

"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

반응형