【问题标题】:How to get Scala Compiler Plugin to work in Scala IDE如何让 Scala 编译器插件在 Scala IDE 中工作
【发布时间】:2011-10-21 11:04:28
【问题描述】:

注意:这是对 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 中输入的任何内容似乎都没有 效果。

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

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

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

【问题讨论】:

    标签: eclipse scala plugins compiler-construction scala-ide


    【解决方案1】:

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

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

    编辑:当我说相对于工作空间时,我指的是存储 .metadata 的实际工作空间目录 ($workspace_loc)。我有一个项目,其中包括源代码的项目文件存储在一个目录中,工作区位于其他位置,即$project_loc (c:\code\project\source) 与 $workspace_loc (c:\code\项目\工作区)。您在编译器参数中指定的目录相对于工作区 ($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。上面的配置对我有用。

    【讨论】:

    • 你还没有阅读我的问题。我知道设置在哪里:“在“项目属性\Scala 编译器(使用项目设置)\高级”选项卡中,”唯一的问题是,它不起作用。
    • 抱歉,我确实阅读了您的问题,但我的意思不够明确。我已经编辑了答案。
    • 谢谢。如果我完全按照你说的那样做,它似乎有效。我认为我之前认为它不起作用的原因是 Eclipse 丢弃了所有输出(System.out 和 log(...)),所以看起来它什么也没做。使用 scalac 生成输出的相同选项在 Eclipse 中没有任何作用。我不得不抛出一个异常来证明它有效,但这是一个不同的问题,需要在不同的问题中解决。你有没有发现如何使用 Xpluginsdir,这样你就不必显式指定 jar 了?
    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多