2011-01-14 7 views
0

Windows 7では、xalanライブラリをjdkの承認ディレクトリにコピーするantターゲットがあるので、発生する可能性があります。ant -/lib/endorsedにコピーしようとすると、ライブラリがWindows 7で次のタスクに利用できない

初めてantターゲットを実行すると、xslt変換が失敗します。 2回目にjarファイルを実行すると、すでに正しい場所にあり、xsltの変換が成功します。

初めてantターゲットを実行すると、ファイルが正常にコピーされたように見えます。それはタイミングの問題のように感じるが、私はそれを回避するために何ができるのか分からない。ここで

は私のコピータスクである:

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

は前にこのようなものを見た誰もいませんか?

+0

それはタイミングの問題は、私は長いを追加していないが睡眠と問題はまだ起こっている。 – kfox

答えて

1

私は問題は、XSLTタスクが実行されるときに、JVM(Ant自体を実行する)が既に承認されたディレクトリからクラスをロードしているということです。 xalan jarを承認されたディレクトリにコピーした後、別のJVMインスタンスをforkする必要があります。

xsltを実行するために何を使用していますか?それがXSLTタスクの場合、単にxalanをロードするためにファクトリ要素を使用できませんでしたか?それがjavaタスクの場合は、fork属性を使用して別のJVMインスタンスでxslt処理を開始します。

+0

ありがとう、それは謎を説明する。それは私が継承したコードであり、私はxsltタスクに触れることができないことを知っていましたが、私はそれを実行する許可を得ています。 – kfox

0

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

さらにしたがって、あなたはより良いXSLT-タスクのclasspath属性を使用する必要があり、他のプログラムのための副作用を持つことができます承認パスにライブラリを追加:

<xslt classpath="${basedir}\xalan.jar" ... /> 
関連する問題