2011-10-21 79 views
4

注:这是斯卡拉-IDE邮件列表,在这里我得到了零答复,并放弃了5天之后等待同一个问题的确切转贴。如何获得斯卡拉编译器插件在斯卡拉IDE工作

我正在写一个Scala的编译器插件。它目前被称为 scalawrapper(但我可能会找到一个更好的名字后)。我已经安装了 类型安全堆栈,我把我的插件在其下:

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

现在我可以打电话scalac这样的:

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

,并自动查找并使用我的插件。

不幸的是,我不能让斯卡拉-IDE来使用它。我总是得到 Missing required plugin: scalawrapper。在“项目属性 \ Scala编译器(使用项目设置)\高级”选项卡,我在Xplugin,需要字段中输入 scalawrapper,那没问题,因为我得到 错误。但没有什么我可以Xpluginsdir型似乎有任何 效果。

我都试过上面给出的绝对路径,试图与前 和反斜杠,试图无空格 中有一个临时目录,相对于试图项目目录,试图相对 到工作区。它只是不会使用任何东西。我也应该注意到, 是不是针对我自己的插件,因为我试图在以前版本的斯卡拉-IDE之前使用ScalaCL 插件和失败 完全相同的原因。

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

谁能告诉我它实际上希望,什么是使用如 默认情况下,我不把任何东西Xpluginsdir?

回答

3

斯卡拉IDE使用演示编译器,不是你已经安装了编译器。要在Scala IDE中使用插件,您需要在Eclipse的首选项中指定它。

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

编辑:当我说相对于工作区,我的意思是存储.metadata的实际工作空间目录($workspace_loc)。我有其中项目文件包括源代码被存储在一个目录中的项目,并在工作区是其它地方,即$project_loc(C:\代码\项目\源)是从$workspace_loc(C:\代码\项目\工作区)不同。在编译器参数中指定的目录与工作空间有关($workspace_loc)。

要了解,如果你有类似的设置,到项目,并选择Properties->Resource->Linked Resources

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

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

请注意,您可以指定在项目属性插件为好,但它仍然使用$workspace_loc。以上配置适用于我。

+0

您还没有阅读我的问题。我知道设置的位置:“在”项目属性\ Scala编译器(使用项目设置)\高级“选项卡中,”唯一的问题是,它不起作用。 –

+0

对不起,我的确看过你的问题,但我对于我的意思还不够明确。我编辑了答案。 –

+0

谢谢。如果我完全像你说的那样做,它似乎就行得通。我认为之前我认为它没有工作的原因是Eclipse抛弃了所有的输出(包括System.out和log(...)),所以它看起来没有任何作用。使用scalac生成输出的相同选项在Eclipse中不起作用。我不得不抛出一个异常来证明它的工作原理,但这是另一个需要在另一个问题中解决的问题。你有没有发现如何使用Xpluginsdir,以便你不必明确指定jar? –