ANT Сгенерированный jar: это проблема пространства имен? - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть Eclipse-Java-Project с ANT-build-файлом.Этот файл сборки экспортирует флягу проекта без компиляции.Поэтому я экспортирую только исходники.

<target name="jar">
    <mkdir dir="/jar"/>
    <jar destfile="/jar/my_test_jarfile.jar" basedir="/src" />
</target>

Я использую этот сгенерированный jar в другом java-проекте eclipse и задаю путь к jar в настройках build-path-проекта.Проблема в том, что eclipse говорит, что не может разрешить пространство имен импортированных классов jar.Если я экспортирую банку вручную, щелкнув правой кнопкой мыши по проекту, а затем «Экспорт» и поместив банку в путь сборки другого проекта, все работает нормально и ошибок нет.Итак, вопрос в том, что я делаю не так?

1 Ответ

1 голос
/ 15 февраля 2012

Так вот мое решение. Кажется, что вы должны сначала скомпилировать исходный код, а затем упаковать его в банку. Я не даю гарантии, что эта банка точно такая же, как та, которую вы получаете от затмения, когда вы делаете правую кнопку мыши, экспортируете и т. Д. Но это работает для меня, больше нет ошибок пространства имен. так вот минимальная версия моих целей муравья:

<project default="run" basedir=".">
    <property name="src.dir" value="src" />
    <property name="classes.dir" value="bin" />
    <property name="build.dir" value="build" />

    <path id="libs">
        <fileset dir="lib">
            <include name="*.jar"/>
        </fileset>
        <pathelement path="${basedir}\${classes.dir}"/>
    </path>

    <target name="run">
        <antcall target="compile"/>
        <antcall target="jar"/>
    </target>

    <target name="compile">
        <javac debug="true" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="libs" encoding="UTF-8" />
    </target>

    <target name="jar">
        <jar destfile="${build.dir}/my_jar_file.jar" basedir="${classes.dir}"> 
    </target>
</project>
...