2012-03-30 129 views
3

我从一个ant文件中执行groovy时遇到了问题。Groovy无法解决java类

在Eclipse中有一个启动,一切工作正常,但wehn我运行Ant文件我得到了以下的输出:

Main.groovy:71:无法解析类InitializeDatabase
[groovyc的] // @行71,柱40 groovyc的] java.lang.Object中 javaClassInstance =新InitializeDatabase()
[groovyc的]

[groovyc的] 1个错误

InitializeDatabase是在同一个包的Java类..

public class InitializeDatabase { 

    public void test() { 
     System.out.println("Hello Groovy"); 
    } 
} 

我想这个问题是位于Ant文件:

<project name="tp" basedir="." default="dbsetup"> 
    <target name="dbsetup"> 
     <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc"> 
      <classpath> 
       <fileset dir="../files/lib/default" includes="*.jar" /> 
      </classpath> 
     </taskdef> 

     <delete dir="bin" /> 
     <mkdir dir="bin" /> 
     <groovyc srcdir="src" destdir="bin" /> 

     <java classname="groovy.ui.GroovyMain" dir="../.." fork="true" failonerror="true"> 
      <classpath> 
       <fileset dir="../files/lib/default" includes="*.jar"/> 
       <pathelement location="bin"/> 
      </classpath> 
      <arg line="build/scripts/src/build/Main.groovy" /> 
     </java> 
    </target> 

</project> 

有人能帮助我吗?

+0

你的java代码和groovy代码在同一个'src'文件夹中吗? – 2012-03-30 12:14:38

+0

是的,相同的项目,相同的src文件夹,相同的包。这两个文件彼此相邻:-) – 2012-03-30 13:34:07

+1

很酷,我想我找出了缺少的东西(见下文)希望它有帮助! :-) – 2012-04-02 09:11:08

回答

2

您需要在您的groovyc之一中包含javac任务。更改:

<groovyc srcdir="src" destdir="bin" /> 

<groovyc srcdir="src" destdir="build"> 
     <javac/> 
    </groovyc> 

,它应该工作的罚款。由于它says here

联合编制意味着Groovy的编纂将解析 Groovy的源文件,所有的人创造存根,调用Java 编译器来编译存根与Java源代码一起,然后 继续以正常的Groovy编译器方式进行编译。这允许 Java和Groovy文件不受约束混合。

...

工作的正确的做法是,当然,使用嵌套的标签,并根据需要所有 的属性,并进一步嵌套的标签。

+0

谢谢,你帮了我很多! – 2012-04-03 15:52:28

+0

@MichaelS很高兴我能帮忙:-)祝你好运! – 2012-04-03 15:53:05

0

这是最后的文件,它的效果很好。 感谢tim_yates!

<target name="dbsetup"> 

     <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc"> 
      <classpath> 
       <fileset dir="../files/lib/default" includes="*.jar" /> 
      </classpath> 
     </taskdef> 

     <delete dir="bin" /> 
     <mkdir dir="bin" /> 
     <groovyc srcdir="src" destdir="bin"> 
      <javac source="1.6" target="1.6" debug="on" /> 
     </groovyc> 

     <java classname="groovy.ui.GroovyMain" dir="../.." fork="true" failonerror="true"> 
      <classpath> 
       <fileset dir="../files/lib/default" includes="*.jar"/> 
       <pathelement location="bin"/> 
      </classpath> 
      <arg line="build/scripts/src/build/access/AccessDbSetup.groovy" /> 
     </java> 
    </target>