2009-01-06 23 views
8

Quiero desarrollar una aplicación web (sin marcos) que combine java con groovy. Estoy usando IDE Netbeans con el complemento.Groovy, Netbeans y Java EE

Si comienzo un nuevo proyecto Java SE y agrego una clase maravillosa, funciona sin problemas ... pero cuando creo un nuevo proyecto Java EE y agrego una clase maravillosa no puede compilar y me muestra el siguiente error :

/home/webcodei/NetBeansProjects/testeGroovyWeb/src/java/pacote/Hello.java:23: cannot find symbol 

symbol : class Hroovy 
location: class pacote.Hello 
      Hroovy h = new Hroovy(); 
/home/webcodei/NetBeansProjects/testeGroovyWeb/src/java/pacote/Hello.java:23: cannot find symbol 
symbol : class Hroovy 
location: class pacote.Hello 
      Hroovy h = new Hroovy(); 
2 errors 
/home/webcodei/NetBeansProjects/testeGroovyWeb/nbproject/build-impl.xml:383: The following error   occurred while executing this line: 
/home/webcodei/NetBeansProjects/testeGroovyWeb/nbproject/build-impl.xml:211: Compile failed; see  the compiler error output for details. 
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos) 

¿alguien tiene una idea de cómo puedo activar Java EE + maravilloso en netbeans?

PD: Sé que la existencia de Grails

PS2: El tarro maravilloso está en mi ruta de clase.

¡Gracias a todos!

Respuesta

5

Parece que el administrador de proyectos NetBeans 6.5 Java Webapp no ​​tiene el soporte "Enable Groovy" que está presente en la aplicación Java y en los proyectos de la biblioteca de la clase Java.

puedo pensar en dos formas en que podría evitar esto:

En primer lugar, se puede poner el código Groovy y pruebas en un proyecto independiente como una biblioteca de clases de Java. Luego, haga que la aplicación Java sea dependiente del proyecto Groovy. NetBeans creará el proyecto dependiente automáticamente, por lo que apenas notará que están en proyectos separados.

En segundo lugar, el "Habilitar Groovy" no es mágico. Todo lo que hace es escribir un groovy-build.xml en/nbprojects y modificar build-impl.xml para importarlo. El groovy-build.xml anula la macro "javac" predeterminada para invocar "groovyc" en su lugar. Si es muy útil con Ant, puede copiar un groovy-build.xml de un proyecto de aplicación Java y copiarlo en su proyecto web Java y luego importarlo desde su build.xml (antes de importar build-impl.xml)) El archivo groovy-build.xml probablemente necesite algunas modificaciones ya que algunas de las propiedades entre una aplicación web y una biblioteca de clase son un poco diferentes.

5

@Dave Smith,

Esto fue exactamente lo que hice. Creé un proyecto javase y una aplicación web y comencé a compararlos. Después de unos minutos, me di cuenta de que la única diferencia era el groovy-build.xml.

Así que copió el maravilloso-build.xml en el directorio, y se inserta las siguientes líneas en mi build.xml:

<import file="nbproject/groovy-build.xml"/> 

Justo antes de la regularidad

<import file="nbproject/build-impl.xml"/> 

y luego llamó la archivo groovy para sobrescribir -init-macrodef-javac.

<target depends="-groovy-init-macrodef-javac" name="-pre-compile"> 

</target> 

también necesitaba cambiar el espacio de nombres del maravilloso-build.xml a la mía por ejemplo:

<macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2"> 

y se inserta la ruta de clase J2EE ($ {} j2ee.platform.classpath) para el atributo unas líneas más tarde:

<attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> 

¡Después de eso, el proyecto funcionó con éxito!= D

¡Gracias a todos!

+0

Todo funcionó bien (gracias!) Excepto un error al compilar el proyecto web: "javac: invalid flag: $ {javac.compilerargs.jaxws}". Solo para intentarlo, eliminé esta bandera adicional en el archivo groovy-build.xml y la compilación tuvo éxito. ¿Alguna alternativa a este feo truco? –

+0

Desearía que alguien lanzara un ejemplo groovy-build.xml para que no tengamos que molestarnos en instalar Grails solo para obtener eso ... y me pregunto si alguien está usando estas cosas, incluso una búsqueda en Github para "groovy-build" .xml "no aparece con un ejemplo! – User