如何在 Ant build.xml 文件中包含外部库? [英] How to include external libraries in Ant build.xml file?

查看:27
本文介绍了如何在 Ant build.xml 文件中包含外部库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的 Java 源代码中,我想使用存储在我的应用程序的lib"目录中的 java 档案 (.jar) 中的不同类.但是,如果我执行ant run",那么我总是会收到java.lang.NoClassDefFoundError"消息.我尝试了几种方法来修复它,但没有任何效果...也许这里有人可以帮助我?

In my Java source-code I want to use different classes from java archives (.jar) stored in my application's "lib" directory. But if I do "ant run" then I always get a "java.lang.NoClassDefFoundError" message. I tried several things to fix it but nothing worked... Maybe someone here can help me?

这是我的 build.properties 文件:

app.name=MyApplication
app.version=1.0
main.class=mypackage.MyMain
build.dir=build
classes.dir=${build.dir}/classes
jar.dir=${build.dir}/jar
dist.dir=dist
src.dir=src
test.dir=test
lib.dir=lib

这是我的build.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<project name="My Project" default="run" basedir=".">
  <description>My description.</description>

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

    <!-- Initialization -->
  <target name="init" description="Prepare needed directories.">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${classes.dir}" />
    <mkdir dir="${jar.dir}" />
    <mkdir dir="${dist.dir}" />
    <mkdir dir="${lib.dir}" />
  </target>

    <!-- Cleanup -->
  <target name="clean" description="Remove all files created by the build/test process.">
    <delete dir="${classes.dir}" />
    <delete dir="${dist.dir}" />
  </target>

    <!-- Compile application -->
  <target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" 
       destdir="${classes.dir}" 
       debug="yes"
       includeantruntime="false">
      <!-- <classpath refid="classpath" /> -->
    </javac>
  </target>

    <!-- Java Archive -->
  <target name="jar" depends="compile">
    <!--<delete file="${jar.dir}/${app.name}-${app.version}.jar"/>-->
    <delete dir="${jar.dir}"/>
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${app.name}-${app.version}.jar" basedir="${classes.dir}">
      <manifest>
        <attribute name="Class-Path" value="${lib.dir}"/>
        <attribute name="Main-Class" value="${main.class}"/>
      </manifest>
    </jar>
  </target>

    <!-- Run application -->
  <target name="run" depends="jar">

    <java jar="${jar.dir}/${app.name}-${app.version}.jar" 
        fork="true">
    </java>
    <!--
    <java fork="true" classname="${main.class}">
      <classpath>
         <path refid="classpath"/>
         <path location="${jar.dir}/${app.name}-${app.version}.jar"/>
      </classpath>
    </java>
    -->
  </target>
</project>

如果有人能帮忙就好了.

It would be nice if anyone could help.

干杯!

本尼

推荐答案

classes.dir=build/classes 替换 classes.dir=${build.dir}/classescode> 和 jar.dir=${build.dir}/jarjar.dir=build/jar 来自您的 build.properties 文件会工作.

Replacing classes.dir=${build.dir}/classes with classes.dir=build/classes and jar.dir=${build.dir}/jar with jar.dir=build/jar from your build.properties file will work.

这篇关于如何在 Ant build.xml 文件中包含外部库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆