2012-06-23 12 views
8

Estoy intentando compilar un proyecto mixto Maven Java/Scala que tiene una clase Scala que depende de un bean Java con anotaciones lombok. Traté de agregar el archivo lombok jar a la ruta de acceso de clase de inicio del compilador Scala, así como el agente lombok, pero el compilador aún no pudo encontrar los getters generados. ¿Hay alguna manera para que el compilador de Scala reconozca las anotaciones de lombok? Si no, ¿cuál sería una buena solución?Error al compilar el proyecto mixto Java/Scala y Lombok

Tenga en cuenta que estoy tratando de evitar la introducción de otro proyecto maven solo para compilar este bean primero ya que el bean lógicamente pertenece al mismo proyecto. Además, no puedo volver a escribir el bean en Scala, ya que luego se usa en un proyecto de GWT.

Gracias,

Respuesta

9

creo que no será capaz de evitarlo. La integración normal de Scala/Java funciona así:

  1. Scala va primero, ya que Java no sabe nada de Scala.
    1. Analizadores de Scalac Java y aprende sobre los elementos visibles.
    2. Scalac lee los archivos Scala y genera archivos de clase.
  2. Java va en último lugar, y lee los archivos Java más los archivos de clase generados por Scala.

El problema obvio es que Scala no sabe nada sobre las anotaciones de Lombok, por lo que no puede descifrar los elementos generados por ella.

Si no tiene ninguna dependencia de Java a Scala, puede simplemente invertir el orden: deje que Java vaya primero, y haga que Scala incluya los archivos de clases de salida de javac en su classpath.

De lo contrario, supongo que tendrá que romperlo.

+0

Gracias Daniel. La mayoría de las dependencias van de Java a Scala. Hasta ahora, solo este tipo de beans crea la dependencia inversa. – Eduardo

+0

Desarrollador de Lombok aquí: ¿Quizás sepa _how_ scala analiza archivos java? ecj? javac? Analizador Handrolled? También me pregunto si este proceso admite procesadores de anotaciones en absoluto. Si es así, podríamos hacer algo. – rzwitserloot

+0

@rzwitserloot [Analizador manual] (https://github.com/scala/scala/tree/master/src/compiler/scala/tools/nsc/javac) (debe sorprender - su trabajo se convirtió en la base para el javac comenzando con JDK 1.3). No es compatible con los procesadores de anotación. –

Cuestiones relacionadas