在Scala中调用ResultSet.getMetaData会导致java.lang.SecurityException

在Scala中调用ResultSet.getMetaData会导致java.lang.SecurityException,scala,jdbc,slick,Scala,Jdbc,Slick,我正在使用Akka中的Slick访问MySQL数据库。 我想通过调用resultSet.getMetaData获取表列信息,如下所示: (我试过使用slick.jdbc.meta.MTable.getTables,但它总是返回一个空向量;as) implicit val meta2string=GetResult{row:PositionedResult=> val md=row.rs.getMetaData()//调用rs.getMetaData将导致引发异常 “调试” } val done=

我正在使用Akka中的Slick访问MySQL数据库。
我想通过调用
resultSet.getMetaData
获取表列信息,如下所示:
(我试过使用
slick.jdbc.meta.MTable.getTables
,但它总是返回一个空向量;as)

implicit val meta2string=GetResult{row:PositionedResult=>
val md=row.rs.getMetaData()//调用rs.getMetaData将导致引发异常
“调试”
}
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$1.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader$1.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$1(<pastie>:138)
    at slick.jdbc.GetResult$$anon$2.apply(GetResult.scala:73)
    at slick.jdbc.GetResult$$anon$2.apply(GetResult.scala:73)
    at slick.jdbc.SQLActionBuilder$$anon$1$$anon$2.extractValue(StaticQuery.scala:100)
    at slick.jdbc.StatementInvoker$$anon$2.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$1.emitStream(StaticQuery.scala:95)
    at slick.jdbc.SQLActionBuilder$$anon$1.emitStream(StaticQuery.scala:95)
    at slick.basic.BasicBackend$DatabaseDef$$anon$4.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)
java.lang.SecurityException:禁止的包名称:java.sql
位于java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:898)
位于java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1014)
位于java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
位于java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
位于java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
位于java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
位于java.base/java.security.AccessController.doPrivileged(本机方法)
位于java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:575)
位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
在$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$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$iw$$iw$iw$iw$iw$$iw$iw$
位于slick.jdbc.GetResult$$anon$2.apply(GetResult.scala:73)
位于slick.jdbc.GetResult$$anon$2.apply(GetResult.scala:73)
位于slick.jdbc.SQLActionBuilder$$anon$1$$anon$2.extractValue(StaticQuery.scala:100)
位于slick.jdbc.StatementInvoker$$anon$2.extractValue(StatementInvoker.scala:67)
位于slick.jdbc.positionedResulterator.fetchNext(PositionedResult.scala:176)
在slick.util.readaheaderator.update上(readaheaderator.scala:28)
在slick.util.readaheaderator.hasNext(readaheaderator.scala:34)
位于slick.util.readaheaderator.hasNext$(readaheaderator.scala:33)
位于slick.jdbc.positionedResulterator.hasNext(PositionedResult.scala:167)
在slick.jdbc.StreamingInvokerAction.emitStream(StreamingInvokerAction.scala:31)
位于slick.jdbc.StreamingInvokerAction.emitStream$(StreamingInvokerAction.scala:26)
位于slick.jdbc.SQLActionBuilder$$anon$1.emitStream(StaticQuery.scala:95)
位于slick.jdbc.SQLActionBuilder$$anon$1.emitStream(StaticQuery.scala:95)
在slick.basic.BasicBackend$DatabaseDef$$anon$4.run上运行(BasicBackend.scala:342)
位于java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
位于java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
位于java.base/java.lang.Thread.run(Thread.java:834)
我不确定我的使用是否有问题,或者它没有Slick的支持?

有人能帮我一下吗?

我不太确定这一点,但我怀疑这个问题是由于我在sbt控制台中运行代码示例造成的。
我用jar运行了相同的代码片段,一切正常。

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

错误似乎表明它试图在包
java.sql
中加载一个类,但加载的东西在java引导类路径之外(例如库在包
java.sql
中有自己的类),这是不允许的。错误似乎表明它正在尝试加载包
java.sql
中的类,但加载的对象在java引导类路径之外(例如库在包
java.sql
中有自己的类),这是不允许的。