【问题标题】:classpath error when executing a jar by antant执行jar时的类路径错误
【发布时间】:2010-08-27 21:29:19
【问题描述】:

我正在尝试执行使用 ant 创建的 jar 文件。但我无法找出执行 jar 时库不可用的原因。 我正在尝试加载 derby 嵌入式数据库驱动程序,但有些我没有在类路径中获取 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>

【问题讨论】:

    标签: ant classpath


    【解决方案1】:

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

    尝试以下方法:

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

    我对任务工作原理的理解是它会生成一个相对于您提供的 jarfile 名称的类路径(文件名不必存在)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多