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 在bootclasspath中将ant路径用作属性_Java_Ant_Bootclasspath - Fatal编程技术网

Java 在bootclasspath中将ant路径用作属性

Java 在bootclasspath中将ant路径用作属性,java,ant,bootclasspath,Java,Ant,Bootclasspath,在ant脚本中,我设置了路径: <path id="classpath.id"> <pathelement path="somepath_1" /> ... <pathelement path="somepath_n" /> </path> 如何使用classpath.id在javaant任务中设置bootclasspath,类似于: <java ...> <jvmarg value="-Xbootclasspa

在ant脚本中,我设置了路径:

<path id="classpath.id">
  <pathelement path="somepath_1" />
  ...
  <pathelement path="somepath_n" />
</path>
如何使用
classpath.id
java
ant任务中设置
bootclasspath
,类似于:

<java ...>
  <jvmarg value="-Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.id}"/>
</java>


此时,ant不知道
${classpath.id}

有一种特殊的语法用于获取ant引用id引用的值。请使用
${ant.refid:classpath.id}
而不是
${classpath.id}


请参阅以获取参考。

为完整起见,以下是可能的解决方案:

使用${ant.refid:}前缀

这是最干净的解决方案,所有的功劳都归功于它。只用

<java ...>
  <jvmarg value="Xbootclasspath/a:${myjar.jar}${path.separator}${ant.refid:classpath.id}"/>
</java>
不过,这种解决方案也有一些复杂之处

  • 替换了实际的bootclasspath,从中删除了java的JAR,到目前为止,ant中还没有
    嵌套标记
  • 在JavaSE9中,-Xboothclasspath属性不再可用。只有-Xboothclasspath/a,因此
    在那里不起作用
<java ...>
  <jvmarg value="Xbootclasspath/a:${myjar.jar}${path.separator}${ant.refid:classpath.id}"/>
</java>
<property name="classpath.property" refid="classpath.id"/>
<java ...>
  <jvmarg value="Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.property}"/>
</java>
<java fork="true" ...>
  <bootclasspath>
    <path refid="classpath.id"/>
    <pathelement path="${myjar.jar}" />
  </bootclasspath>
</java>