在 Scala 中调用 ResultSet.getMetaData 结果是 java.lang.SecurityException

call ResultSet.getMetaData in Scala results in java.lang.SecurityException

我在 Akka 中使用 Slick 来访问 MySQL 数据库。
我想通过调用 resultSet.getMetaData 来获取 table 列信息,如下所示:
(我尝试使用 slick.jdbc.meta.MTable.getTables,但它总是 returns 一个空向量;如 someone else also ran into it.

implicit val meta2string = GetResult{ row: PositionedResult =>
  val md = row.rs.getMetaData() // call rs.getMetaData will cause exception thrown
  "debugging"
}

val done  = Slick.source(sql"SELECT * FROM trips".as[String](meta2string)).runForeach(println)

问题是,每当我调用 rs.getMetaData() 时,都会发生异常:

java.lang.SecurityException: Prohibited package name: java.sql
    at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:898)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1014)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
    at java.base/java.net.URLClassLoader.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader.run(URLClassLoader.java:452)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:575)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at $line303.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.$anonfun$meta2string(<pastie>:138)
    at slick.jdbc.GetResult$$anon.apply(GetResult.scala:73)
    at slick.jdbc.GetResult$$anon.apply(GetResult.scala:73)
    at slick.jdbc.SQLActionBuilder$$anon$$anon.extractValue(StaticQuery.scala:100)
    at slick.jdbc.StatementInvoker$$anon.extractValue(StatementInvoker.scala:67)
    at slick.jdbc.PositionedResultIterator.fetchNext(PositionedResult.scala:176)
    at slick.util.ReadAheadIterator.update(ReadAheadIterator.scala:28)
    at slick.util.ReadAheadIterator.hasNext(ReadAheadIterator.scala:34)
    at slick.util.ReadAheadIterator.hasNext$(ReadAheadIterator.scala:33)
    at slick.jdbc.PositionedResultIterator.hasNext(PositionedResult.scala:167)
    at slick.jdbc.StreamingInvokerAction.emitStream(StreamingInvokerAction.scala:31)
    at slick.jdbc.StreamingInvokerAction.emitStream$(StreamingInvokerAction.scala:26)
    at slick.jdbc.SQLActionBuilder$$anon.emitStream(StaticQuery.scala:95)
    at slick.jdbc.SQLActionBuilder$$anon.emitStream(StaticQuery.scala:95)
    at slick.basic.BasicBackend$DatabaseDef$$anon.run(BasicBackend.scala:342)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

我不确定是否有某事。我的使用有误,还是 Slick 不支持?
谁能帮我解决这个问题?

我不太确定,但我怀疑这个问题是因为我是 运行 sbt 控制台中的代码示例。 我 运行 使用 jar 的相同代码片段,一切正常。