2012-07-02 61 views
1

我正在開發一個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中修復它毫無頭緒。

這裏有一些相關的職位(雖然不偏食的Scala IDE相關):

回答

1

的IDE過程中的使用SBT,所以有不等於分叉。難道你只能加載DLL一次,例如通過將其加載到object的構造函數中?

該技術建議here