我正在开发一个 scala 编译器插件。编译器插件在“refcheck”阶段之后运行。它分析 AST(抽象语法树)并生成一些输出。在这个插件中,我正在加载一个本机库“scalaz3.dll”,使用System.loadLibrary
我计划将编译器插件与 Eclipse Scala IDE 一起使用。我-XPlugin
在 ScalaIde 首选项中设置了参数。当我在 Eclipse 中编译 scala 源文件时,该插件在该refchecks
阶段之后被调用并且工作正常(生成所需的输出)
但是,当我对源文件进行更改并编译时,出现以下错误。
The SBT builder crashed while compiling your project.
Native Library scalaz3.dll already loaded in another classloader.
看起来 ScalaIDE 生成了另一个类加载器并尝试在同一进程中加载插件类。
我在编译器插件测试用例中遇到了同样的问题。但是,我fork in Test := true
在build.sbt
. 但我对如何在 eclipse scala IDE 中修复它一无所知。
以下是一些相关的帖子(尽管与 eclipse scala ide 无关):