4

我有一个声明类路径的构建文件,如图所示

<path id="compile.classpath">
    <fileset dir="${basedir}/lib"    includes="**"/>        
    <fileset dir="${jboss.home}/lib" includes="**"/>        
    <pathelement path ="${build.classes.dir}"/>
</path>

我尝试查看文档,但无法理解. pathelement

我知道 ID 用于在执行任务时引用此类路径,并且文件集包括 jarfile。

编辑1: 我的疑问是为什么我们不能用fileset包含类文件来代替pathelement

4

2 回答 2

6

最新编辑:

我的疑问是为什么我们不能使用文件集来包含类文件来代替路径元素?

如果您使用文件集,那么您将向路径中添加一组类文件,如下所示:

CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....

当 Java 期望看到的只是:

CLASSPATH=classes

只有 jar(和 WAR、EAR 等)文件明确列在类路径中(Java 将打开它们并加载它们的类文件),因此需要 ANT 中的文件集。

更新

这是 Oracle 文档:

.jar、.zip 或 .class 文件的类路径。每个类路径都应以文件名或目录结尾,具体取决于您将类路径设置为:

  • For a .jar or .zip file that contains .class files, the class path ends with the name of the .zip or .jar file.
  • For .class files in an unnamed package, the class path ends with the directory that contains the .class files.
  • For .class files in a named package, the class path ends with the directory that contains the "root" package (the first package in the full package name).
于 2013-01-22T08:45:33.907 回答
2

这里已经有关于“路径元素”的类似问题。从提供的文档中:“如果它是您的示例中的路径结构:“类似路径的结构可以通过嵌套元素包含对另一个类似路径的结构(路径本身就是资源集合)的引用”

 <path id="base.path">
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
</path>

如果是类路径结构:“路径属性旨在与预定义路径一起使用”

<classpath>
  <pathelement path="${classpath}"/>
  <pathelement location="lib/helper.jar"/>
</classpath>
于 2013-01-21T14:16:33.757 回答