2009-01-06 125 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