8

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

如果我启动一个新的 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 jar 在我的类路径中。

感谢你所做的一切!

4

2 回答 2

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 和类库之间的一些属性有点不同。

于 2009-01-06T22:45:40.497 回答
5

@戴夫史密斯,

这正是我所做的。我创建了一个 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 更改为我的 ex:

<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

感谢你所做的一切!

于 2009-01-08T11:07:05.990 回答