首页 文章

Groovy无法解析java类

提问于
浏览
3

我通过从ant文件执行groovy遇到了问题 .

在带有启动器的Eclipse中,一切正常但是我运行ant文件后得到以下输出:

Main.groovy:71:无法解析类InitializeDatabase [groovyc] @第71行,第40列 . [groovyc] java.lang.Object javaClassInstance = new 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>

有谁可以帮助我吗?

2 回答

  • 0

    您需要在 groovyc 中包含 javac 任务 . 更改:

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

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

    它应该工作正常 . 因为它says here

    联合编译意味着Groovy编译将解析Groovy源文件,为所有源文件创建存根,调用Java编译器以编译存根以及Java源,然后以正常的Groovy编译器方式继续编译 . 这允许无约束地混合Java和Groovy文件 .

    ...

    当然,正确的工作方式是根据需要使用嵌套标记和所有属性以及进一步嵌套的标记 .

  • 2

    这是最终文件很好用 . 感谢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>
    

相关问题