Je suis en train de développer un plugin compilateur scala. Le plugin compilateur s'exécute après la phase "refcheck". Il analyse l'AST (Arbre Syntaxique Abstrait) et génère une certaine sortie. Dans ce plugin, je charge une bibliothèque native "scalaz3.dll" en utilisant System.loadLibrary
Je prévois d'utiliser le plugin compilateur avec l'Eclipse Scala IDE. Je définis le paramètre -XPlugin
dans les préférences de ScalaIde. Lorsque je compile un fichier source scala dans Eclipse, le plugin est invoqué après la phase refchecks
et fonctionne bien (il génère la sortie désirée)
Cependant, lorsque je fais des modifications au fichier source et que je compile, je reçois l'erreur suivante.
Le constructeur SBT a planté lors de la compilation de votre projet.
La bibliothèque native scalaz3.dll est déjà chargée dans un autre classloader.
Il semble que ScalaIDE génère un autre classloader et tente de charger les classes du plugin dans le même processus.
J'ai rencontré le même problème dans le cas de test du plugin compilateur. Cependant, je l'ai corrigé en utilisant fork in Test := true
dans le build.sbt
. Mais je suis perplexe sur la façon de le corriger dans eclipse scala IDE.
Voici quelques articles connexes (bien que non liés à l'Eclipse Scala IDE) :