Ошибка classpath при выполнении jar от ant - PullRequest
1 голос
/ 06 апреля 2010

Я пытаюсь выполнить файл jar, созданный с помощью ant. Но я не могу выяснить, почему библиотеки не доступны при выполнении jar. Я пытаюсь загрузить драйвер встроенной базы данных derby, но почему-то я не получаю derby.jar в classpath.

Ошибка, которую я получаю:

  [java] Unable to load the JDBC driver org.apache.derby.jdbc.EmbeddedDriver
  [java] Please check your CLASSPATH.
  [java] java.lang.ClassNotFoundExcepApplication Started
  [java] tion: org.apache.derby.jdbc.EmbeddedDriver
  [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

а

<path id="jar.classpath">
    <fileset dir="${lib.dir}" includes="*.jar" />
</path>

<path id="compiled-src.jar.classpath">
    <path refid="jar.classpath" />
    <pathelement location="${build.classes.dir}" />
</path>

<target name="jar" depends="compile-src" description="Create Jar">
    <mkdir dir="${dist.dir}" />
    <manifestclasspath property="lib.list" jarfile="${dist.dir}/">
        <classpath refid="jar.classpath" />
    </manifestclasspath>
    <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.classes.dir}" >
        <manifest>
            <attribute name="Main-Class" value="${main-class}" />
            <attribute name="Class-Path" value="${lib.list}" />
        </manifest>
    </jar>
</target>

<target name="run" depends="jar" description="Run application from jar">
    <java jar="${dist.dir}/${ant.project.name}.jar" fork="true" />
</target>

1 Ответ

0 голосов
/ 07 апреля 2010

Параметр jarfile для manifestclasspath должен быть именем файла, а не именем каталога.

Попробуйте следующее:

<manifestclasspath property="lib.list" jarfile="${dist.dir}/acme.jar">
    <classpath refid="jar.classpath" />
</manifestclasspath>

Мое понимание того, как работает задача, заключается в том, что она генерирует путь к классу относительно предоставленного вами имени файла jar-файла (имя файла не обязательно должно существовать)

...