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 とは関係ありません)。