3

Antに2番目のサードパーティJARを含めるように1つのサードパーティJARのクラスパスを設定するにはどうすればよいですか?

このサイトのANTの例でSchematronを使用してバニラを実行するにはこれが必要です。(この質問に答えるためにSchematronが何であるかを知る必要はないと99%確信しています。)例の説明は、ページの上部近くにリンクされた短いPDFにあります。すべてのファイルの内容をPDFからEclipseに直接コピーして貼り付けました。

ant-schematron-2010-04-14.jar次に、上記のサイトからダウンロードしsaxon9he.jar、SAXONSourceForgeページから取得しました。それに合わせてビルドファイルも変更しました。行番号あり、コメントなしの場合、次のようになります。

09 <project name="schematron-ant-sample" default="validate">
14     <taskdef name="schematron"
15              classname="com.schematron.ant.SchematronTask"
16              classpath="lib/ant-schematron-2010-04-14.jar; lib/saxon9he.jar" />
22     <target name="validate" description="Test with a Fileset">
23         <schematron schema="sch/sample.sch" failonerror="false">
24             <fileset dir="xml" includes="*.xml" />
25         </schematron>
26     </target>
27 </project>

ビルドファイルを実行すると、次のエラーが発生しました。

validate:

BUILD FAILED
C:\Users\gdawes\Documents\workspace\SchematronAntExample\build.xml:23: /
javax.xml.transform.TransformerFactoryConfigurationError: Provider /
net.sf.saxon.TransformerFactoryImpl not found

Total time: 265 milliseconds

schematronSAXON JARがのクラスパスにリストされていない場合も、同様のエラーが発生します。TransformerFactoryImplそれがSAXONJARに存在することを確認しましたが、Schematronコードにそれを認識させる方法がわかりません。クラスパスはどのように設定すればよいですか?(または、私が間違っていて、これがクラスパスの問題ではない場合、ビルドを成功させるにはどうすればよいですか?)

4

2 に答える 2

2

classpathには、次のもの<taskdef>のみを含める必要があります。例によるAntのSchematronの使用lib/ant-schematron-2010-04-14.jarで提供されている例と同様です。

<?xml version="1.0" encoding="UTF-8"?>
<project name="schematron-ant-sample" default="validate">
  <taskdef name="schematron"
      classname="com.schematron.ant.SchematronTask"
      classpath="lib/ant-schematron-2010-04-14.jar" />
  <target name="validate" description="Test with a Fileset">
    <schematron schema="sch/sample.sch" failonerror="false">
      <fileset dir="xml" includes="*.xml" />
    </schematron>
  </target>
</project>

を修正することに加えて、Antライブラリフォルダーにを<taskdef>配置すると、エラーが利用可能になり、エラーが解決されます(Ant1.8.2を使用するUbuntuLinuxでテスト済み)。saxon9he.jarnet.sf.saxon.TransformerFactoryImpl

于 2012-08-08T19:13:49.700 に答える
1

私の記憶が正しければ、taskdefのクラスパスは、ロードしようとしているクラスを検索するために使用されるクラスパスであり、タスクが実際に実行されるクラスパスではありません。EclipseのAntビルド構成User Entriesのタブのセクションに必要なjarを追加してみてください。Classpath

于 2012-08-08T19:44:37.367 に答える