Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy无法解析java类_Java_Ant_Groovy - Fatal编程技术网

Groovy无法解析java类

Groovy无法解析java类,java,ant,groovy,Java,Ant,Groovy,通过从ant文件执行groovy,我遇到了一个问题 在带有启动器的Eclipse中,一切正常,但我运行ant文件时得到了以下输出: Main.groovy:71:无法解析类InitializeDatabase [groovyc]@第71行第40列。[groovyc]java.lang.Object javaClassInstance=新的InitializeDatabase() [groovyc] [groovyc]1错误 InitializeDatabase是同一个包中的java类 publi

通过从ant文件执行groovy,我遇到了一个问题

在带有启动器的Eclipse中,一切正常,但我运行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>


有人能帮我吗?

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

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


它应该很好用。正如它所说:

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

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


这里是最后一个文件,它非常有效。 感谢蒂姆·耶茨

<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>


您的java代码和groovy代码是否在相同的
src
文件夹中?是的,相同的项目,相同的src文件夹,相同的包。这两个文件彼此相邻:-)很酷,我想我找到了丢失的内容(见下文)希望能有所帮助:-)对不起,到现在为止没有时间测试它。。但是看起来不错。。我会尽快尝试的!谢谢你,你帮了我很多忙@迈克尔很高兴我能帮忙:-)祝你好运!
<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>