Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用fileset和pathelement在build.xml中设置类路径的区别_Java_Ant_Classpath_Build.xml - Fatal编程技术网

Java 使用fileset和pathelement在build.xml中设置类路径的区别

Java 使用fileset和pathelement在build.xml中设置类路径的区别,java,ant,classpath,build.xml,Java,Ant,Classpath,Build.xml,我有一个声明类路径的构建文件,如图所示 <path id="compile.classpath"> <fileset dir="${basedir}/lib" includes="**"/> <fileset dir="${jboss.home}/lib" includes="**"/> <pathelement path ="${build.classes.dir}"/> </p

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

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

我试图查看文档,但无法理解的用法
pathelement

我知道在执行任务时,ID用于引用这个类路径,而文件集包含JAR文件

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

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


如果是类路径结构: “路径属性用于预定义的路径”


最新编辑:

我的疑问是为什么我们不能使用文件集来包含类文件来代替pathelement

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

CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....
当Java希望看到的只是:

CLASSPATH=classes
类路径上只显式列出jar(以及WAR、EAR等)文件(Java将打开它们并加载它们的类文件),因此在ANT中需要一个文件集

更新 以下是Oracle文档:

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

  • 对于包含.class文件的.jar或.zip文件,类路径以.zip或.jar文件名结尾
  • 对于未命名包中的.class文件,类路径以包含.class文件的目录结尾
  • 对于命名包中的.class文件,类路径以包含“root”包(完整包名中的第一个包)的目录结尾

ANT手册:该手册没有在Depthagred中解释pathelement。文档假设读者理解Java类路径和类加载器。它也没有正确解释“path”标记与“classpath”的关系“。它们基本上是一样的,但doco对于初学者来说相当糟糕。是的,在理解这些pathelement时有点不确定。而且文档中没有涉及到这一点。但是您是否尝试过搜索文件集和路径之间的差异?例如,还有另一个问题:我看了链接和许多其他问题,人们似乎总是使用pathelement作为类文件。我同意,所以在我的示例中,为什么我不能替换为您?我没有理解我的观点。。。。使用文件集将每个类文件添加到类路径。。。Java并不希望这样填充类路径。对于类文件,它只需要根目录
CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....
CLASSPATH=classes