0

Windows 7には、次のxslt変換タスクを実行できるように、xalanライブラリをjdk承認済みディレクトリにコピーするantターゲットがあります。

antターゲットを初めて実行すると、xslt変換は失敗します。2回目の実行では、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タスクの場合、xalanをロードするためにファクトリ要素を使用することはできませんか?Javaタスクの場合は、fork属性を使用して、別のJVMインスタンスでxslt処理を開始します。

于 2011-01-15T08:49:34.767 に答える
0

通常、JavaはProgram FilesWindows 7のディレクトリにインストールされるため、JAVA_HOMEはProgram Filesディレクトリ内のどこかを指し、通常のユーザーにはそこに新しいファイルを作成する権限がありません。

さらに、承認されたパスにライブラリを追加すると、他のプログラムに副作用が生じる可能性があるためclasspath、XSLTタスクの属性をより適切に使用する必要があります。

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