更新我的build.properties
以使用sbt 0.13+后,我无法再在运行时动态加载案例类。
使用sbt 0.12.2,我可以使用自定义classloader,但现在使用sbt 0.13.2我得到error:caused by: java.lang.ClassNotFoundException: scala.Product
这是一个runnable example。运行sbt test
将显示错误。
sbt 0.13中有什么变化让我的动态类加载恶作剧结束了,我该如何解决这个问题?
谢谢你看看!
-Julian
使用sbt 0.13.7-M4可以部分解决这个问题。 sbt run
成功,而sbt test
给出了不同的error,其中似乎每个测试中的动态加载的类被加载两次。
答案 0 :(得分:1)
测试中的“加载两次”错误是由于我没有将我的设置代码放在Specs2期望中。
此外,我需要在sbt 0.13+中使用不同的类加载器:问题是由于使用了错误的类加载器。
首先我尝试了ClassLoader loader = ClassLoader.getSystemClassLoader();
,但之后就崩溃了。
接下来,在sbt 0.12.2的情况下,我尝试了ClassLoader loader = Thread.currentThread().getContextClassLoader();
,但是这突破了sbt 0.13 +。
现在我正在使用一个虚拟类来探测并获得一个la probe.getClass().getClassLoader()
的类加载器,
这似乎解决了这个问题。