Jdbc 当'时,父级中的依赖项未解析;运行';在子项目上调用

Jdbc 当'时,父级中的依赖项未解析;运行';在子项目上调用,jdbc,sbt,Jdbc,Sbt,我有以下根项目设置: lazy val root = project.aggregate(rest,backend).dependsOn(rest,backend) lazy val rest = project lazy val backend = project.dependsOn(rest).settings(mainClass in (Compile, run) := Some("my.backend.services.M

我有以下根项目设置:

lazy val root = project.aggregate(rest,backend).dependsOn(rest,backend)                                 
lazy val rest = project
lazy val backend = project.dependsOn(rest).settings(mainClass in (Compile, run) := Some("my.backend.services.Main"))

run in Compile <<= (run in Compile in backend)
lazy val root=project.aggregate(rest,后端).dependsOn(rest,后端)
lazy val rest=项目
lazy val backend=project.dependsOn(rest).settings(mainClass in(Compile,run):=Some(“my.backend.services.Main”))

在编译中运行Try
fork-in-run:=true
。如果这能解决问题,那可能是类加载器的问题。(如中所示,SBT加载驱动程序的类加载器显然不是JDBC用来查找驱动程序的类加载器或类加载器的祖先。)

如果<代码> For <代码>修复它,你可能会认为问题已经解决了。但是请注意,forking在新生成的JVM中运行您的程序,而不是使用您已经在其中运行SBT的JVM。生成新的JVM需要时间

如果您想尝试一个不涉及分叉的修复,我认为如果您在堆栈溢出和/或Google搜索中包含“classloader”,您会发现很多相关信息和建议,例如:


如果你看的话,还有很多类似的例子。

试试
fork-in-run:=true
。如果这能解决问题,那可能是类加载器的问题。(如中所示,SBT加载驱动程序的类加载器显然不是JDBC用来查找驱动程序的类加载器或类加载器的祖先。)

如果<代码> For <代码>修复它,你可能会认为问题已经解决了。但是请注意,forking在新生成的JVM中运行您的程序,而不是使用您已经在其中运行SBT的JVM。生成新的JVM需要时间

如果您想尝试一个不涉及分叉的修复,我认为如果您在堆栈溢出和/或Google搜索中包含“classloader”,您会发现很多相关信息和建议,例如:


如果你看的话,还有很多类似的问题。

运行中的fork:=true
修复了吗?如果是这样的话,我会怀疑类加载器的问题。Seth,把它变成一个问题的形式,这样我就可以接受它了!我只需要添加这样的设置:
lazy val backend=project.dependsOn(rest.settings)(mainClass in(Compile,run):=Some(“my.backend.services.Main”),fork in run:=true)
运行中的fork:=true是否修复了它?如果是这样的话,我会怀疑类加载器的问题。Seth,把它变成一个问题的形式,这样我就可以接受它了!我只需要添加这样的设置:
lazy val backend=project.dependsOn(rest).settings(mainClass in(Compile,run):=Some(“my.backend.services.Main”),fork in run:=true)
我很好奇这是否是SBT中的一个bug。我确信驱动程序是通过
Class.forName()
加载的,并且相应的类虽然作为依赖项引入,但在加载过程中不会作为类路径的一部分包含run@ThaDon:但这并不是那么简单,因为类加载器。看到我刚才添加到回答中的链接,我几乎很好奇这是否是SBT中的一个bug。我确信驱动程序是通过
Class.forName()
加载的,并且相应的类虽然作为依赖项引入,但在加载过程中不会作为类路径的一部分包含run@ThaDon:但这并不是那么简单,因为类加载器。查看我刚才添加到答案中的链接