0

在 Windows 7 上,我有一个 ant 目标,它将 xalan 库复制到 jdk 认可的目录中,以便可以进行下一个 xslt 转换任务。

ant 目标第一次运行时,xslt 转换失败。第二次运行时,jar 文件已经在正确的位置,并且 xslt 转换成功。

ant 目标第一次运行时,看起来文件复制成功。这感觉像是一个时间问题,但我不知道我能做些什么来解决它。

这是我的复制任务:

<mkdir dir="${java.home}\lib\endorsed"/>
<copy file="${basedir}\xalan.jar" tofile="${java.home}\lib\endorsed\xalan.jar"/>

有没有人见过这样的事情?

4

2 回答 2

1

我认为问题在于执行 XSLT 任务时,JVM(运行 Ant 本身)已经从背书目录加载了类。在将 xalan jar 复制到认可的目录后,您将不得不派生另一个 JVM 实例。

你用什么来运行 xslt?如果是 XSLT 任务,你不能只使用 factory 元素来加载 xalan 吗?如果是 java 任务,则使用 fork 属性在另一个 JVM 实例中启动 xslt 处理。

于 2011-01-15T08:49:34.767 回答
0

通常 Java 安装Program Files在 Windows 7 上的目录中,因此您的 JAVA_HOME 将指向目录内的某个位置Program Files,普通用户无权在其中创建新文件。

此外,将库添加到认可路径可能会对其他程序产生副作用,因此您应该更好地使用classpathXSLT-Task 的属性:

<xslt classpath="${basedir}\xalan.jar" ... />
于 2011-01-15T12:36:34.633 回答