我正在尝试执行使用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>
答案 0 :(得分:0)
manifestclasspath的jarfile参数需要是文件名而不是目录名。
尝试以下方法:
<manifestclasspath property="lib.list" jarfile="${dist.dir}/acme.jar">
<classpath refid="jar.classpath" />
</manifestclasspath>
我对任务如何工作的理解是它生成了一个相对于你提供的jarfile名称的类路径(文件名不一定存在)