Groovy не может разрешить Java-класс - PullRequest
3 голосов
/ 30 марта 2012

У меня проблема с выполнением groovy из файла ant.

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

2 голосов
/ 30 марта 2012

Вам нужно включить задачу javac в вашу groovyc задачу.Измените:

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

на

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

И все должно работать нормально.Как сказано здесь :

Совместная компиляция означает, что компиляция Groovy будет анализировать исходные файлы Groovy, создавать заглушки для всех них, вызывать компилятор Java для компиляции заглушекс исходниками Java, а затем продолжите компиляцию обычным способом Groovy.Это позволяет смешивать файлы Java и Groovy без ограничений.

...

Правильный способ работы - это, конечно, использовать вложенный тег и всеатрибуты и дополнительные вложенные теги по мере необходимости.

0 голосов
/ 03 апреля 2012

Вот окончательный файл, который прекрасно работает.Спасибо 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...