2009-01-06 90 views
8

我想开发一个Web应用程序(无框架)混合java与groovy。我正在使用带有插件的IDE Netbeans。Groovy,Netbeans和Java EE

如果我启动一个新的Java SE项目并添加一个groovy类,它的工作原理没有问题..但是当我创建一个新的Java EE项目并添加一个groovy类时,它无法编译并向我显示以下错误:

/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) 

有谁知道的我该如何在NetBeans中启用Java EE + Groovy的线索?

PS:我知道Grails的

PS2的存在:Groovy的罐子是我的类路径。

谢谢大家!

回答

5

似乎NetBeans 6.5 Java Webapp项目管理器没有Java App和Java类库项目中的“启用Groovy”支持。

我能想到的两种方法可能会解决这个问题:

首先,你可以把你的Groovy代码和测试在一个单独的项目作为一个Java类库。然后使Java webapp依赖于Groovy项目。 NetBeans将自动构建依赖项目,因此您几乎不会注意到它们在单独的项目中。

其次,“启用Groovy”并不神奇。它所做的只是在/ nbprojects中编写一个groovy-build.xml,并修改build-impl.xml以导入它。 groovy-build.xml覆盖默认的“javac”宏来代替调用“groovyc”。如果您对Ant很熟悉,可以从Java应用程序项目复制groovy-build.xml并将其复制到Java Web项目,然后从build.xml中导入它(在导入build-impl.xml之前) )。 groovy-build.xml可能需要一些调整,因为webapp和类库之间的一些属性有些不同。

5

@Dave Smith,

这正是我所做的。我创建了一个javase项目和一个webapp,并开始比较它们。几分钟后,我意识到唯一的区别是groovy-build.xml。

所以我复制了Groovy的build.xml文件进入目录,并插入以下行到我的build.xml:

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

权前的常规

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

然后叫groovy文件覆盖-init-macrodef-javac。

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

</target> 

我也需要改变从Groovy的build.xml文件矿前的命名空间:

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

并插入了J2EE类路径($ {} j2ee.platform.classpath)的属性几行后:

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

之后,该项目工作成功!= D

谢谢大家!

+0

所有工作正常(谢谢!),除了编译web项目时出现一个错误:“javac:invalid flag:$ {javac.compilerargs.jaxws}”。只是为了试一试,我在groovy-build.xml文件中删除了这个额外的标志,并且编译成功。任何替代这种丑陋的黑客? – 2011-11-28 07:47:47