2011-01-14 6 views
0

auf Windows 7 Ich habe eine Ameise Ziel, die Kopien eine xalan Bibliothek in die jdk endorsed, so dass die nächsten XSLT-Transformation Aufgabe nicht verfügbar kann auftreten.ant - versuchen,/lib zu kopieren/endorsed, Bibliothek ist in Windows 7 auf die nächste Aufgabe

Das erste Mal, dass die Ameise Ziel läuft, schlägt die XSLT-Transformation. Beim zweiten Mal ist die JAR-Datei bereits an der richtigen Stelle und die XSLT-Transformation ist erfolgreich.

Das erste Mal, dass die Ameise Ziel läuft, sieht es aus wie die Datei erfolgreich kopiert. Es fühlt sich an wie ein Timing-Problem, aber ich weiß nicht, was ich tun kann, um es zu umgehen.

Hier ist meine Kopie Aufgabe:

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

Hat jemand etwas Ähnliches schon einmal gesehen?

+0

Es ist nicht ein Timing-Problem, habe ich ein lang Schlaf und das Problem passiert immer noch. – kfox

Antwort

1

ich glaube, das Problem ist, dass, wenn das XSLT-Task ausgeführt ist, die JVM (die laufen Ant selbst) bereits Klassen aus dem Verzeichnis endorsed geladen. Sie müssten eine andere JVM-Instanz forkieren, nachdem Sie das Xalan-Jar in das unterstützte Verzeichnis kopiert haben.

Was Sie Xslt mit laufen? Wenn es die XSLT-Aufgabe ist, könnten Sie nicht einfach das Factory-Element verwenden, um xalan zu laden? Wenn es sich um eine Java-Aufgabe handelt, verwenden Sie das fork-Attribut, um die XSLT-Verarbeitung in einer anderen JVM-Instanz zu starten.

+0

Danke, das erklärt das Geheimnis. Es war Code, den ich geerbt, und ich wusste nicht, dass ich die Xslt Aufgabe berühren konnte, aber ich habe die Erlaubnis, es zu tun, und alles funktioniert jetzt groß. – kfox

0

Normalerweise ist Java in das Verzeichnis Program Files unter Windows 7 installiert, daher wird Ihr JAVA_HOME irgendwo innerhalb des Verzeichnisses Program Files zeigen, und normale Benutzer haben nicht die Berechtigung, dort neue Dateien zu erstellen.

Zusätzlich eine Bibliothek zum gebilligt Pfad hinzufügen, kann für andere Programme Nebenwirkungen haben deshalb sollten Sie besser das classpath Attribut der XSLT-Aufgabe verwenden:

<xslt classpath="${basedir}\xalan.jar" ... /> 
Verwandte Themen