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