2012-03-30 131 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>