【问题标题】:Mixing AspectJ and Scala in an Eclipse Project在 Eclipse 项目中混合 AspectJ 和 Scala
【发布时间】:2011-02-04 03:16:28
【问题描述】:

任何人都能够让 Scala 和 AspectJ (AJDT) 在 Eclipse 3.6 中很好地协同工作?

似乎 Scala 的编织器与 AspectJ 的编织器发生冲突。 我希望我只是错过了一些东西。

编辑:在同一个项目中玩得很好

【问题讨论】:

  • 下面的Matt R是正确的,可以将两个插件一起安装,但可能存在一些我们不知道的不兼容问题。所以,请更具体地了解发生了什么。\
  • @Andrew Eisenberg 基本上,一旦我将 Scala Builder 添加到项目中,AspectJ 编织者就会停止编织。如果我禁用 scala 构建器,除了没有 Scala 编译之外,一切正常。
  • 对...我明白发生了什么。

标签: java eclipse scala aspectj


【解决方案1】:

根据您上面的评论,您似乎希望一个项目同时使用 AspectJ 构建器和 Scala 构建器。这是不可能的。每个都委托给自己的编译器,并且两个编译器(尚)不兼容。 Scala 编译器可以一起构建 Java 和 Scala 代码,而 AspectJ 编译器可以一起构建 AspectJ 和 Java 代码,但仅此而已。

如果您希望方面应用于您的 Scala 代码,您必须将您的 AspectJ 和 Scala 代码分离到不同的项目中,然后将 Scala 项目添加到您的 AspectJ 项目的 inpath 中。

这与从 ant 或命令行编译时需要执行的操作相同。

【讨论】:

  • 这实际上是我所做的。 AspectJ + Java 非常强大(我什至认为它比 Scala 更强大)。但 Scala 在语法上胜出。如果只有 Java 7 出现并带有闭包:)
  • 如果你使用基于注解的方面,完全可以在 Scala 项目中用 Scala 编写它们,然后用 scalac 和 iajc 编译它们。所以有些项目可以用 Ant 正确编译,但不能在 Scala IDE 中编译。我希望 ScalaBuilder 被扩展以编织带注释的 Scala 方面。
  • 关于我的最后一条评论 - 您可以使用加载时编织 (eclipse.org/aspectj/doc/next/devguide/…) 在 IDE 中运行带注释的 Scala 方面。
【解决方案2】:

目前推荐的版本是still Eclipse3.5.2

票如10000753251 提及:

如果您迫不及待,可以在 http://download.scala-ide.org/nightly-update-wip-helios-2.8.0.final 找到一个实验性的夜间构建更新站点。

今天,您可以尝试使用 Helios 3.6 的当前夜间版本是:

http://download.scala-ide.org/nightly-update-master-2.8.1.final

【讨论】:

  • 我之前尝试的版本是nightly,但我会再试一次。
【解决方案3】:

我已经为此苦苦挣扎了一段时间。这是我的解决方案:

首先,将 Scala 和 AspectJ 代码分离到不同的项目中。

然后将 Ant 构建器添加到您的 Scala 项目中。每当 scala 构建器运行并进行编织时,它就会运行。它使用 ant4eclipse 来提取类路径,但您必须提供 scala 库的位置。

构建.xml:

<project name="simple-example" default="compile"
xmlns:ant4eclipse="antlib:org.ant4eclipse"
         xmlns:antcontrib="antlib:net.sf.antcontrib">

<ant4eclipse:jdtClassPathLibrary name="org.scala-ide.sdt.launching.SCALA_CONTAINER">
  <fileset file="../lib/scala-library.jar"/>
</ant4eclipse:jdtClassPathLibrary >

<ant4eclipse:getJdtClassPath 
    workspacedirectory=".."
    projectName="lpfExample"
    property="classpath"/>

<target name="compile">
    <iajc sourceroots="src" destdir="bin">
        <inpath>
            <pathelement location="bin" />
        </inpath>
        <aspectpath>
            <pathelement location="../aspects/bin"/>
        </aspectpath>
        <classpath path="${classpath}"/>
    </iajc>
</target>
</project>

【讨论】:

    【解决方案4】:

    您的意思是同时安装 Scala 插件和 AJDT 吗?这绝对是可行的——例如,开发 Scala 插件本身就需要它。

    我执行以下操作:

    • 安装 AspectJ 开发工具 + eclipse weaving 服务功能
    • 安装 Scala IDE,但忽略 Scala 的 JDT Weaving

    【讨论】:

    • 不,我已经安装了这两个插件。问题是我想使用 AspectJ 来解决我无法使用 Traits 完成的建议。
    猜你喜欢
    • 2011-05-25
    • 2016-02-23
    • 1970-01-01
    • 2011-12-08
    • 2012-11-02
    • 2014-01-01
    • 2012-06-25
    • 1970-01-01
    • 2013-08-31
    相关资源
    最近更新 更多