2011-02-04 8 views
5

¿Alguien ha podido obtener un Scala y AspectJ (AJDT) para jugar muy bien juntos en Eclipse 3.6?Mezcla de AspectJ y Scala en un proyecto de Eclipse

Parece que el tejedor de Scala entra en conflicto con el tejedor de AspectJ. Espero que me esté perdiendo algo.

Editar: Juega muy bien en el mismo proyecto

+1

Matt R a continuación es correcta, es posible instalar los plugins dos juntos, pero puede haber algunas incompatibilidades que no somos conscientes. Entonces, por favor sea más específico en cuanto a lo que está pasando.\ –

+0

@ Andrew Eisenberg Básicamente las tejedoras AspectJ deja de tejer una vez que agrego la Scala Builder para el proyecto. Si deshabilito el generador de scala todo funciona bien, excepto que no hay compilación de Scala. –

+0

Derecha ... Ya veo lo que está pasando. –

Respuesta

3

Basado en su comentario anterior, parece que quiere que un solo proyecto use tanto el constructor AspectJ como el constructor Scala. Esto no es posible. Cada uno delega en su propio compilador y los dos compiladores no son (todavía) compatibles. El compilador de Scala puede compilar código Java y Scala juntos, y el compilador AspectJ puede construir AspectJ y código Java juntos, pero eso es todo.

Si desea que se apliquen aspectos a su código Scala, debe separar su código AspectJ y Scala en diferentes proyectos y luego agregar el proyecto Scala al camino de su proyecto AspectJ.

Esto es lo mismo que tendrías que hacer si estuvieras compilando desde la línea de comando o la hormiga.

+0

Esto es de hecho lo que hice. AspectJ + Java es extremadamente poderoso (incluso diría que es más poderoso que Scala). Pero Scala gana sintácticamente. Si tan sólo Java 7 estaba fuera y con cierres :) –

+0

Si está utilizando aspectos basados ​​en anotación, es perfectamente posible escribir en Scala dentro de un proyecto Scala luego compilarlas con scalac y CJI. Entonces, hay proyectos que se compilan correctamente con Ant pero no en Scala IDE. Espero que ScalaBuilder se extienda para tejer aspectos anotados de Scala. – Nick

+0

En relación con mi último comentario - puede ejecutar aspectos Scala anotados dentro de la IDE se utiliza la carga en tiempo tejiendo (http://www.eclipse.org/aspectj/doc/next/devguide/ltw-configuration.html#enabling-load- tejido del tiempo). – Nick

2

En este momento, la versión recomendada es still Eclipse3.5.2.

entradas como 1000075 o 3251 mención:

Si estás desesperado hay una noche sitio de actualización de construcción experimental en http://download.scala-ide.org/nightly-update-wip-helios-2.8.0.final.

Hoy en día, la corriente noche puede probar con Helios 3.6 sería:

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

+0

La versión que probé hace un tiempo fue la noche pero lo intentaré de nuevo. –

-1

Qué quiere decir tener tanto la Scala plug-in y AJDT instalado al mismo tiempo? Esto es definitivamente factible, por ejemplo, es necesario para desarrollar el plug-in Scala.

hago lo siguiente:

  • instalar las herramientas dev AspectJ + eclipsan característica de servicio tejer
  • Instalar Scala IDE, pero omiten JDT tejer por Scala
+0

No, tengo ambos plugins instalados. El problema es que me gustaría usar AspectJ para consejos transversales que no puedo hacer con los Rasgos. –

0

He estado luchando con esto desde hace un tiempo. Aquí está mi solución:

Primero, separa tu Scala y tu código AspectJ en diferentes proyectos.

A continuación, agregue un generador Ant a su proyecto Scala. Se ejecuta cada vez que se ejecuta el generador de scala y se teje. Utiliza ant4eclipse para extraer la ruta de clase, pero deberá proporcionar la ubicación de la biblioteca de scala.

build.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> 
Cuestiones relacionadas