2010-04-06 116 views
1

我想执行使用ant创建的jar文件。但我无法找出为什么库在执行jar时不可用。 我想加载德比嵌入式数据库驱动,但一些我没有得到类路径中的derby.jar。当通过蚂蚁执行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> 

回答

0

jar文件参数manifestclasspath需要一个文件名,而不是一个目录名。

尝试以下操作:任务是如何工作的

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

我的理解是,它产生相对于您提供的jar文件名称的类路径(文件名不必存在)