4

注意:这是 Scala-IDE 邮件列表上相同问题的精确转贴,我得到零回复并在 5 天后放弃等待。

我正在编写一个 Scala 编译器插件。它目前被称为 scalawrapper(但我以后可能会找到一个更好的名字)。我安装了 Typesafe Stack,并将我的插件放在下面:

C:\Program Files\typesafe-stack\misc\scala-devel\plugins

现在我可以这样调用 scalac:

scalac -classpath ... -Xplugin-require:scalawrapper test\...

它会自动找到并使用我的插件。

不幸的是,我无法让 Scala-IDE 使用它。我总是得到 Missing required plugin: scalawrapper。在“项目属性\Scala 编译器(使用项目设置)\高级”选项卡中,我在 Xplugin-require 字段中输入了 scalawrapper,因为我收到错误消息,所以它可以工作。但是我在 Xpluginsdir 中输入的任何内容似乎都没有任何效果。

我尝试过上面给出的绝对路径,尝试过正斜杠和反斜杠,尝试过没有空格的临时目录,尝试过相对于项目目录,尝试过相对于工作区。它只是不会使用任何东西。我还应该注意,这并不特定于我自己的插件,因为我之前尝试在以前版本的 Scala-IDE 中使用 ScalaCL 插件,但由于完全相同的原因而失败。

我今天刚刚更新(15.10.2011),所以应该有最新版本(看来我终于可以明确地将缩进设置为 4,但也许我只是忽略了过去的设置)。

有人可以告诉我它的实际期望是什么,以及当我没有在 Xpluginsdir 中放任何东西时默认使用什么?

4

1 回答 1

3

Scala IDE 使用演示编译器,而不是您安装的编译器。要在 Scala IDE 中使用插件,您需要在 Eclipse 的首选项中指定它。

试试Windows->Preferences->Scala->Compiler。请参阅高级选项卡。路径是相对于工作空间的。

编辑:当我说相对于工作空间时,我指的是存储 .metadata 的实际工作空间目录($workspace_loc)。我有一个项目,其中包括源代码的项目文件存储在一个目录中,而工作区位于其他位置,即$project_loc(c:\code\project\source) 与$workspace_loc(c:\code\project\workspace) 不同。您在编译器参数中指定的目录相对于工作区 ( $workspace_loc)。

要了解您是否有类似的设置,请转到项目并选择Properties->Resource->Linked Resources.

我在$workspace_loc名为 plugin 的目录下创建了一个目录,并将 jar 文件放在那里。在Windows->Preferences->Scala->Compiler高级选项卡下,我有

Xplugin = C:\code\project\workspace\plugin\xxx-0.0.1.jar
Xplugin-require = xxx

请注意,您也可以在项目属性中指定插件,但它仍然使用$workspace_loc. 上面的配置对我有用。

于 2011-10-21T11:14:56.337 回答