0

パッケージ client に public static void main() を持つ単純なクラス FabricClient があります。このパッケージは、私のプロジェクトの「bin」ディレクトリにあります。bin ディレクトリから、コマンド ラインで、次のようにこのクラスのメインを実行できます。

user@sys /c/projects/myproject/bin
$ java -classpath .;c:\dir\my.jar client.FabricClient

Java コマンドを手動で実行する親ディレクトリ (/c/projects/myproject) から ant build.xml ファイルを実行したいと考えています。次のように dir 属性を使用してみました。

  <target name="run-client">
    <java classname="client.FabricClient"
        classpath="${classpath}"
        fork="true"
        failonerror="true"
        dir="./bin">
     </java>          
  </target>

私のクラスパス変数には、現在のディレクトリと、コマンド ラインで使用される my.jar のディレクトリがあります (クラスをコンパイルする ant コマンドは、同じ変数で正常に動作します)。

クラスパスの生成に使用される設定は次のとおりです

  <property name="my.jar" location="c:\dir\my.jar" />
  <property name="classpath" location=".:${my.jar}:." />

典型的な java.lang.NoClassDefFound エラーが発生しています: client/FabricClient

Ant バージョン 1.7.0 を使用しています

build.xml ファイルを bin に移動して dir 属性を削除すると、問題なく動作します。ローカル ディレクトリ以外のディレクトリから Java を実行できますか? これが dir 属性の機能だと思いました。

4

2 に答える 2

1

ant のパスは通常、次のように参照されます。

<java classname="client.FabricClient"
    fork="true"
    failonerror="true"
    dir="./bin">
    <classpath>
         <pathelement location="C:/dir/my.jar"/>        
    </classpath>

読みやすく信頼性が高い

于 2011-03-10T14:39:45.460 に答える
0

クラスパスには、my.jar があるディレクトリではなく、ファイルmy.jarが含まれている必要があります。

于 2011-03-10T14:22:29.917 に答える