我有以下根项目设置:
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)
当我输入run
时,我收到一条错误消息:
[error](run-main)java.sql.SQLException:找不到合适的驱动程序 JDBC:MySQL的://本地主机/分贝用户=用户ID&安培;密码=密码 java.sql.SQLException:找不到合适的驱动程序 JDBC:MySQL的://本地主机/ ....
所以"mysql" % "mysql-connector-java" % "5.1.26"
项目中的backend
依赖项似乎不是运行期间类路径的一部分?我觉得奇怪的是它只是这种依赖而不是其他...它是动态加载类的方式吗?
有解决方法吗?
答案 0 :(得分:1)
试试fork in run := true
。如果修复它,它可能是一个类加载器问题。 (就像在,无论类加载器SBT加载驱动程序显然不是类加载器,或类加载器的祖先,JDBC用于查找驱动程序。)
如果fork
事情修复了它,您可能会认为问题已解决。但请注意,forking在新生成的JVM中运行程序,而不是使用已经运行SBT的JVM。生成新的JVM需要时间。
如果您想尝试不涉及分叉的修复,我认为如果您在Stack Overflow和/或Google搜索中包含“classloader”,您将找到许多相关信息和建议,例如:
如果你看的话,还有更多像这样的东西。