ant执行jar时出现classpath错误

时间:2010-04-06 17:07:38

标签: ant classpath

我正在尝试执行使用ant创建的jar文件。但我无法找到执行jar时库不可用的原因。 我正在尝试加载德比嵌入式数据库驱动程序,但有些我怎么没有在类路径中获取derby.jar。

我得到的错误是

  [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 :(得分:0)

manifestclasspath的jarfile参数需要是文件名而不是目录名。

尝试以下方法:

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

我对任务如何工作的理解是它生成了一个相对于你提供的jarfile名称的类路径(文件名不一定存在)